<?php  

define('MAIL_FROM','nobody@ignore.com');
define('MAIL_SIGNATURE',"\n\n---\nDO NOT REPLY TO THIS EMAIL\nTHIS IS AN AUTOMATIC MESSAGE\n");


if (0) {
$m = new CMIMEMail('heyjohnlim@yahoo.com','jlim@natsoft.com.my','Test attachments html5');
$m->mailbody('test');//,'<b>Test</b>');
$m->attach('license.php', 'text/plain',"L1\nL2\nL3\n");
$m->attach('license.txt', 'text/plain',"L1\nL2\nL3\n");
print $m->send();
}

/* 
* fixed jlim - fclose() not called. Extra content boundary removed for plain text with attachments.
* Content-Description added.
*
* Notes from rozhik@ziet.zhitomir.ua 25 Mar 2000: 
* This library based  idea of Dan Potter 
* Improvements: Multi attachmends in one e-mail, ability to post html & plain trext, up to 3x speed improved. 
* USSAGE - mimetype example for attacment 
* $m = new CMIMEMail($to,$from,$subject); 
* $m->mailbody("This is simply text","<html><body><h1>This is HTML text</h1>"); 
* $m->attach("example.html","text/html",$filebody); 
* $m->attachFile("resume.gif","image/gif"); 
* $m->send(); 
* NOTE: if your system have chunk_split function use it. 
******* 
* To Do: 
* 1. Make quoted-printable encoder and use them in makebody; 
* 2. Generate right boundaries 
* 3. Fix bugs in  SMTP send direct futction SMTPsend() 
*/  
/*
function my_chunk_split($str)  
{  
        $stmp = base64_encode($str);  
        $len = strlen($stmp);  
        $out =  "";  
    $done=0; 
    while( $done<$len ) { 
      $out.=( $len-$done>76)?substr($strp,$done, 76). "\r\n":substr($strp,$done, $len-$done). "\r\n"; 
      $done+=76; 
       
    } 
        return $out;  
}  
*/

class CMIMEMail {  
 var $to;  
 var $boundary =  "----=_NextPart_000_0009_01BF95E9.CDFD2060";  
 var $smtp_headers;  
 var $filename_real;  
 var $body_plain;  
 var $body_html;  
 var  $atcmnt; 
 var $atcmnt_type; 
 function CMIMEMail($to,$from,$subject,$priority=3) {  
   $this->to=$to; $this->from=$from; $this->subject=$subject; $this->priority=$priority;  
 } 
 function  mailbody( $plain, $html= "" ) {  
   $this->body_plain=$plain;  
   $this->body_html=$html;  
 }  
 function  attach( $name, $content_type, $data ) {  
   $this->atcmnt[$name]=$data;  
   $this->atcmnt_type[$name]=$content_type;  
 }  
 function  attachfile( $fname, $content_type ) {  
   $name=ereg_replace( "(.+/)", "",$fname); 
   $f=fopen($name, "r"); 
   attach($name,$content_type,$fread(filesize($f))); 
   fclose($f); 
 }  
 function  clear() {  
   unset( $atcmnt );  
   unset( $atcmnt_type );  
 }  
 function  makeheader() { 
   $out = "Reply-To: ".$this->from. "\n"; 
   $out.= "MIME-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"".$this->boundary. "\"\nX-Priority: ".$this->priority. "\n"; 
   return $out; 
 } 
 function  makebody() { 
   $boundary2=  "----=_NextPart_001_0009_01BF95E9.CDFD2060";  
   $out= ""; 
   $out= "\n\n".$this->body_plain. "\n\n"; 
   if( $this->body_html!= "" ) { 
     $out.= "--".$this->boundary. "\nContent-Type: multipart/alternative;\n boundary=$boundary2\n\n"; 
     $out.= "$body_plan\n--$boundary2\nContent-Type: text/plain\nContent-Description: text message\nContent-Transfer-Encoding: quoted-printable\n\n".$this->body_plain. "\n\n--$boundary2\nContent-Type: text/html\n". 
            "Content-Description: html message\nConent-Transfer-Encoding: quoted-printable\n\n$this->body_html\n\n--$boundary2--\n"; 
   } else { 
     $out.= "--".$this->boundary. "\nContent-Type: text/plain\nContent-Description: text message\nContent-Transfer-Encoding: quoted-printable\n\n".$this->body_plain. "\n"; 
   } 
   reset( $this->atcmnt_type); 
   while( list($name, $content_type) = each($this->atcmnt_type) ) { 
     $out.= "\n--$this->boundary\nContent-Type: $content_type\nContent-Transfer-Encoding: base64\nContent-Description: $name ($content_type)\nContent-Disposition: attachment; filename=\"$name\"\n\n". 
       chunk_split(base64_encode($this->atcmnt[$name])); 
      
   } 
  $out .=  "\n--$this->boundary--\n";
   print "<pre>$out";
   return $out; 
 }  
 function  send(){ 
   return mail( $this->to, $this->subject, $this->makebody(),$this->makeheader() ); 
 } 
 function  sendto($email){ 
  return @mail( $email, $this->subject, $this->makebody(),$this->makeheader() ); 
 }  
 /*
 function  SMTPsend($host){ 
   $errno=0;$errstr= ""; 
//   $f=fsockopen("127.0.0.1",25,&$erno, &$errstr); 
   if(!$f) { 
     $this->send(); 
   } else { 
      //SNMP commands Not finished yet 
      echo fgets($f,512);      
     fputs($f, "HELO host.com\n"); 
      echo fgets($f,512);  
      fputs($f, "MAIL FROM: ".$this->from. "\n"); 
      echo fgets($f,512);  
      fputs($f, "RCPT TO: ".$this->to). "\n"; 
      echo fgets($f,512);  
     fputs($f, "data\n"); 
      echo fgets($f,512);  
     fputs($f, "From: ".$this->from. "\nTo: ".$this->to. "\n".$this->makeheader().$this->makebody(). "\n\n.\n"); 
     fputs($f, "quit\nexit"); 
      
     fclose($f); 
  } 
 } */
}  
?>  