"; var $mail_from_smtp = "<\"Anonymous\":>"; var $mail_to; var $mail_to_smtp; var $mail_cc; var $mail_bcc; var $mail_text; var $mail_html; var $mail_type; var $mail_header; var $mail_body; var $mail_reply_to; var $mail_return_path; var $attachments_index; var $attachments = array(); var $attachments_img = array(); var $boundary_mix; var $boundary_rel; var $boundary_alt; var $sended_index; var $error_msg = array( 1 => 'Mail was not sent', 2 => 'Body Build Incomplete', 3 => 'Need a mail recipient in mail_to', 4 => 'No valid Email', 5 => 'Opening File' ); var $mime_types = array( 'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'bmp' => 'image/bmp', 'png' => 'image/png', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'swf' => 'application/x-shockwave-flash', 'doc' => 'application/msword', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'pdf' => 'application/pdf', 'ps' => 'application/postscript', 'eps' => 'application/postscript', 'rtf' => 'application/rtf', 'bz2' => 'application/x-bzip2', 'gz' => 'application/x-gzip', 'tgz' => 'application/x-gzip', 'tar' => 'application/x-tar', 'zip' => 'application/zip', 'html' => 'text/html', 'htm' => 'text/html', 'txt' => 'text/plain', 'css' => 'text/css', 'js' => 'text/javascript' ); /** * Constructor * void mimemail() */ function utils_email(){ $this->boundary_mix = "=-nxs_mix_" . md5(uniqid(rand())); $this->boundary_rel = "=-nxs_rel_" . md5(uniqid(rand())); $this->boundary_alt = "=-nxs_alt_" . md5(uniqid(rand())); $this->attachments_index = 0; $this->sended_index = 0 ; if(!defined('BR')){ define('BR', (strstr(PHP_OS, 'WIN') ? "\r\n" : "\n"), TRUE); } } /** * void set_from(string mail_from, [string name]) */ function set_from($mail_from, $name = ""){ if ($this->validate_mail($mail_from)){ $this->mail_from = !empty($name) ? "$name <$mail_from>" : $mail_from; } else { $this->mail_from = "Anonymous "; } } /** * void set_from_smtp(string mail_from, [string name]) */ function set_from_smtp($mail_from, $name = "") { if ($this->validate_mail($mail_from)){ $this->mail_from_smtp = !empty($name) ? "\"$name\":<$mail_from>" : $mail_from; } else { $this->mail_from = "\"Anonymous\":"; } } /** * bool set_to(string mail_to, [string name]) */ function set_to($mail_to, $name = ""){ if ($this->validate_mail($mail_to)){ $this->mail_to = !empty($name) ? "$name <$mail_to>" : $mail_to; return true; } return false; } /** * bool set_to_smtp(string mail_to, [string name]) */ function set_to_smtp($mail_to, $name = ""){ if ($this->validate_mail($mail_to)){ $this->mail_to_smtp = !empty($name) ? "\"$name\":<$mail_to>" : $mail_to; return true; } return false; } /** * bool set_cc(string mail_cc, [string name]) */ function set_cc($mail_cc, $name = ""){ if ($this->validate_mail($mail_cc)){ $this->mail_cc = !empty($name) ? "$name <$mail_cc>" : $mail_cc; return true; } return false; } /** * bool set_bcc(string mail_bcc, [string name]) */ function set_bcc($mail_bcc, $name = ""){ if ($this->validate_mail($mail_bcc)){ $this->mail_bcc = !empty($name) ? "$name <$mail_bcc>" : $mail_bcc; return true; } return false; } /** * bool add_to(string mail_to, [string name]) */ function add_to($mail_to, $name = ""){ if ($this->validate_mail($mail_to)){ $mail_to = !empty($name) ? "$name <$mail_to>" : $mail_to; $this->mail_to = !empty($this->mail_to) ? $this->mail_to . ", " . $mail_to : $mail_to; return true; } return false; } /** * bool add_cc(string mail_cc, [string name]) */ function add_cc($mail_cc, $name = ""){ if ($this->validate_mail($mail_cc)){ $mail_cc = !empty($name) ? "$name <$mail_cc>" : $mail_cc; $this->mail_cc = !empty($this->mail_cc) ? $this->mail_cc . ", " . $mail_cc : $mail_cc; return true; } return false; } /** * bool add_bcc(string mail_bcc, [string name]) */ function add_bcc($mail_bcc, $name = ""){ if ($this->validate_mail($mail_bcc)){ $mail_bcc = !empty($name) ? "$name <$mail_bcc>" : $mail_bcc; $this->mail_bcc = !empty($this->mail_bcc) ? $this->mail_bcc . ", " . $mail_bcc : $mail_bcc; return true; } return false; } /** * bool set_reply_to(string mail_reply_to, [string name]) */ function set_reply_to($mail_reply_to, $name = ""){ if ($this->validate_mail($mail_reply_to)){ $this->mail_reply_to = !empty($name) ? "$name <$mail_reply_to>" : $mail_reply_to; return true; } return false; } /** * bool set_return_path(string mail_return_path) */ function set_return_path($mail_return_path){ if ($this->validate_mail($mail_return_path)){ $this->mail_return_path = $mail_return_path; return true; } return false; } /** * void set_subject(string subject) */ function set_subject($subject){ $this->mail_subject = !empty($subject) ? $subject : "No subject"; } /** * void set_text(string text) */ function set_text($text){ if (!empty($text)){ $this->mail_text = $text; } } /** * void set_html(string html) */ function set_html($html){ if (!empty($html)){ $this->mail_html = $html; } } /** * string get_eml() */ function get_eml() { if ($this->build_body()){ return 'To: ' . $this->mail_to . BR . 'Subject: ' . $this->mail_subject . BR . $this->mail_header . BR . BR . $this->mail_body; } return false; } /** * void new_mail([mixed from], [mixed to], [string subject], [string text], [string html]) */ function new_mail($from = "", $to = "", $subject = "", $text = "", $html = ""){ // First, clear all vars $this->mail_subject = ""; $this->mail_from = ""; $this->mail_from_smtp = ""; $this->mail_to = ""; $this->mail_to_smtp = ""; $this->mail_cc = ""; $this->mail_bcc = ""; $this->mail_text = ""; $this->mail_html = ""; $this->mail_header = ""; $this->mail_body = ""; $this->mail_reply_to = ""; $this->mail_return_path = ""; $this->attachments_index = 0; $this->sended_index = 0; // Clear Array Vars $this->attachments = array(); $this->attachments_img = array(); // Asign vars if (is_array($from)){ $this->set_from($from[0],$from[1]); $this->set_from_smtp($from[0],$from[1]); $this->set_return_path($from[0]); } else { $this->set_from($from); $this->set_from_smtp($from); $this->set_return_path($from); } if (is_array($to)){ $this->set_to($to[0],$to[1]); $this->set_to_smtp($to[0],$to[1]); } else { $this->set_to($to); $this->set_to_smtp($to); } $this->set_subject($subject); $this->set_text($text); $this->set_html($html); } /** * void add_attachment(mixed file, string name, [string type]) */ function add_attachment($file, $name, $type = ""){ if (($content = $this->open_file($file))){ $this->attachments[$this->attachments_index] = array( 'content' => chunk_split(base64_encode($content), 76, BR), 'name' => $name, 'type' => (empty($type) ? $this->get_mimetype($name): $type), 'embedded' => false ); $this->attachments_index++; } } /** * bool send() */ function send(){ if ($this->sended_index == 0 && !$this->build_body()){ $this->debug(1); return false; } if (!empty($this->mail_return_path) && $this->php_version_check('4.0.5') && !($this->php_version_check('4.2.3') && ini_get('safe_mode'))){ return mail($this->mail_to, $this->mail_subject, $this->mail_body, $this->mail_header, '-f'.$this->mail_return_path); } else { return mail($this->mail_to, $this->mail_subject, $this->mail_body, $this->mail_header); } } /** * bool send_smtp() */ function send_smtp(){ if ($this->sended_index == 0 && !$this->build_body()){ $this->debug(1); return false; } $smtp = new utils_smtp(); $smtp->host_name="smtp.tpg.com.au"; $smtp->debug = 1; $headers = 'To: '.$this->mail_to.BR; $headers .= 'Subject: '.$this->mail_subject.BR; $headers .= $this->mail_header; return $smtp->send_message($this->mail_from_smtp, array($this->mail_to_smtp), $headers, $this->mail_body); } /** * Private * bool build_body() */ function build_body(){ switch ($this->parse_elements()){ case 1: $this->build_header("Content-Type: text/plain"); $this->mail_body = $this->mail_text; break; case 3: $this->build_header("Content-Type: multipart/alternative; boundary=\"$this->boundary_alt\""); $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/plain" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_text . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/html; charset=\"$this->charset\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_html . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . "--" . BR; break; case 5: $this->build_header("Content-Type: multipart/mixed; boundary=\"$this->boundary_mix\""); $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: text/plain" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_text . BR . BR; foreach($this->attachments as $value){ $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: " . $value['type'] . "; name=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Disposition: attachment; filename=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: base64" . BR . BR; $this->mail_body .= $value['content'] . BR . BR; } $this->mail_body .= "--" . $this->boundary_mix . "--" . BR; break; case 7: $this->build_header("Content-Type: multipart/mixed; boundary=\"$this->boundary_mix\""); $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: multipart/alternative; boundary=\"$this->boundary_alt\"" . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/plain" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_text . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/html; charset=\"$this->charset\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_html . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . "--" . BR . BR; foreach($this->attachments as $value){ $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: " . $value['type'] . "; name=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Disposition: attachment; filename=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: base64" . BR . BR; $this->mail_body .= $value['content'] . BR . BR; } $this->mail_body .= "--" . $this->boundary_mix . "--" . BR; break; case 11: $this->build_header("Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"$this->boundary_rel\""); $this->mail_body .= "--" . $this->boundary_rel . BR; $this->mail_body .= "Content-Type: multipart/alternative; boundary=\"$this->boundary_alt\"" . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/plain" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_text . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/html; charset=\"$this->charset\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_html . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . "--" . BR . BR; foreach($this->attachments as $value){ if ($value['embedded']){ $this->mail_body .= "--" . $this->boundary_rel . BR; $this->mail_body .= "Content-ID: <" . $value['embedded'] . ">" . BR; $this->mail_body .= "Content-Type: " . $value['type'] . "; name=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Disposition: attachment; filename=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: base64" . BR . BR; $this->mail_body .= $value['content'] . BR . BR; } } $this->mail_body .= "--" . $this->boundary_rel . "--" . BR; break; case 15: $this->build_header("Content-Type: multipart/mixed; boundary=\"$this->boundary_mix\""); $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"$this->boundary_rel\"" . BR . BR; $this->mail_body .= "--" . $this->boundary_rel . BR; $this->mail_body .= "Content-Type: multipart/alternative; boundary=\"$this->boundary_alt\"" . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/plain" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_text . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . BR; $this->mail_body .= "Content-Type: text/html; charset=\"$this->charset\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: 7bit" . BR . BR; $this->mail_body .= $this->mail_html . BR . BR; $this->mail_body .= "--" . $this->boundary_alt . "--" . BR . BR; foreach($this->attachments as $value){ if ($value['embedded']){ $this->mail_body .= "--" . $this->boundary_rel . BR; $this->mail_body .= "Content-ID: <" . $value['embedded'] . ">" . BR; $this->mail_body .= "Content-Type: " . $value['type'] . "; name=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Disposition: attachment; filename=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: base64" . BR . BR; $this->mail_body .= $value['content'] . BR . BR; } } $this->mail_body .= "--" . $this->boundary_rel . "--" . BR . BR; foreach($this->attachments as $value){ if (!$value['embedded']){ $this->mail_body .= "--" . $this->boundary_mix . BR; $this->mail_body .= "Content-Type: " . $value['type'] . "; name=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Disposition: attachment; filename=\"" . $value['name'] . "\"" . BR; $this->mail_body .= "Content-Transfer-Encoding: base64" . BR . BR; $this->mail_body .= $value['content'] . BR . BR; } } $this->mail_body .= "--" . $this->boundary_mix . "--" . BR; break; default: $this->debug(2); return false; } $this->sended_index++; return true; } /** * Private * void build_header() */ function build_header($content_type){ if (!empty($this->mail_from)){ $this->mail_header .= "From: " . $this->mail_from . BR; $this->mail_header .= !empty($this->mail_reply_to) ? "Reply-To: " . $this->mail_reply_to . BR : "Reply-To: " . $this->mail_from . BR; } if (!empty($this->mail_cc)){ $this->mail_header .= "Cc: " . $this->mail_cc . BR; } if (!empty($this->mail_bcc)){ $this->mail_header .= "Bcc: " . $this->mail_bcc . BR; } if (!empty($this->mail_return_path)){ $this->mail_header .= "Return-Path: " . $this->mail_return_path . BR; } $this->mail_header .= "MIME-Version: 1.0" . BR; $this->mail_header .= "X-Mailer: PHP/". phpversion() . BR; $this->mail_header .= $content_type; } /** * Private * bool php_version_check(string vercheck) */ function php_version_check($vercheck){ $minver = str_replace(".","", $vercheck); $curver = str_replace(".","", phpversion()); if($curver >= $minver){ return true; } else { return false; } } /** * Private * mixed parse_elements() */ function parse_elements(){ if (empty($this->mail_to)){ $this->debug(3); return false; } $this->mail_type = 0; $this->search_images(); if (!empty($this->mail_text)){ $this->mail_type = $this->mail_type + 1; } if (!empty($this->mail_html)){ $this->mail_type = $this->mail_type + 2; if (empty($this->mail_text)){ $this->mail_text = strip_tags(eregi_replace("
", BR, $this->mail_html)); $this->mail_type = $this->mail_type + 1; } } if ($this->attachments_index != 0){ if (count($this->attachments_img) != 0){ $this->mail_type = $this->mail_type + 8; } if ((count($this->attachments) - count($this->attachments_img)) >= 1){ $this->mail_type = $this->mail_type + 4; } } return $this->mail_type; } /** * Private * void search_images() */ function search_images(){ if ($this->attachments_index != 0){ foreach($this->attachments as $key => $value){ //TNX to Pawel Tomicki, Enrique Garcia M. //only one instruction to support background and src, better REGEX syntax //additional CSS support if (preg_match('/(css|image)/i', $value['type']) && preg_match('/\s(background|href|src)\s*=\s*[\"|\'](' . $value['name'] . ')[\"|\'].*>/is', $this->mail_html)) { $img_id = md5($value['name']) . ".nxs@mimemail"; $this->mail_html = preg_replace('/\s(background|href|src)\s*=\s*[\"|\'](' . $value['name'] . ')[\"|\']/is', ' \\1="cid:' . $img_id . '"', $this->mail_html); $this->attachments[$key]['embedded'] = $img_id; $this->attachments_img[] = $value['name']; } } } } /** * Private * bool validate_mail(string mail) */ function validate_mail($mail){ if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail)){ return true; } $this->debug(4, $mail); return false; } /** * Private * string get_mimetype(string name) */ function get_mimetype($name) { $ext_array = explode(".", $name); if (($last = count($ext_array) - 1) != 0){ $ext = $ext_array[$last]; if (isset($this->mime_types[$ext])) return $this->mime_types[$ext]; } return "application/octet-stream"; } /** * Private * int open_file(string file) */ function open_file($file){ if(($fp = @fopen($file, 'r'))){ $content = fread($fp, filesize($file)); fclose($fp); return $content; } $this->debug(5, $file); return false; } /** * Private * void debug(string msg, [string element]) */ function debug($msg, $element=""){ if ($this->debug_status == "yes"){ echo "
Error: " . $this->error_msg[$msg] . " $element
"; } elseif ($this->debug_status == "halt"){ die ("
Error: " . $this->error_msg[$msg] . " $element
"); } return false; } } ?> Welcome to Levi Consulting<?=isset($_PAGE) ? ' - '.$_PAGE : ''?>
Banner Image

Legal Notice

In consideration of you viewing this website, you agree to be bound by the following terms and conditions:

Copyright ©

The content of this site is protected by international copyright laws. If you wish to copy, redistribute or enquire about any of the information provided within this site, please contact us.

No Warranties or Representations

The information that is contained on this site is for preliminary and general purposes only. Levi Consulting may at any time and from time to time at our full and complete discretion make any changes to the information that is contained in this site. This information is provided "as is" and to the extent permitted by law, is provided without warranty of any kind, expressed or implied, including (but not limited to) any implied warranties of merchantability, fitness for any particular purpose, or non-infringement.

While the information provided is believed to be accurate, it may include errors or inaccuracies. As such, no reliance whatsoever should be placed on the information that is contained in this site as being accurate, complete and up to date.

Levi Consulting will not accept responsibility for any cost, damage, expense or loss (whether direct or indirect) that is or may be incurred as a result of any possible error, misrepresentation and or omission that is, was, or may be contained in this site at any time and from time to time.

Doing
the common things,
uncommonly well

Quick Contact
output_open()?>
  1. output('name')?>
  2. output('phone')?>
  3. output('email')?>
  4. output('enquiry')?>
  5. output('btn_submit')?>
output_close()?>
Join our mailing list