All pastes #504913 Raw Edit

email-problem

public php v1 · immutable
·published 2007-05-23 10:25 UTC
rendered paste body
<?php  //class.php   class html_mime_mail	{         var $mime;         var $html;         var $body;         var $do_html;         var $multipart;         var $html_text;                 var $html_images = array();         var $headers     = array();         var $parts       = array();  		function html_mime_mail($headers = '')			{		       if(!$headers) return true; 		       if(is_string($headers))					{			          	$headers = explode("\r\n", trim($headers));				  	} 		       foreach($headers as $val) 					{				         if(is_array($val)) 							{					            foreach($val as $subval) 									{						               	if(!empty($subval) && is_string($subval))											{							                 	$this->headers[] = $subval;							               	}            						}         					}      				}			}  		function set_body($text = '')			{			    if(is_string($text))					{				          $this->body = $text;				          return true;				    }			    return false;			}  		function add_header()			{			    if((int)phpversion() < 4) return false;				    $args = func_get_args(); 			    if(func_num_args() == 0) return true; 			    foreach($args as $val) 					{	           				if(is_array($val)) 							{					            foreach($val as $subval) 									{                						if(!empty($subval) && is_string($subval)) 											{							                    $this->headers[] = $subval;							                }						            }				           	}							else 							{	              				if(!empty($val)) 									{						                 $this->headers[] = $val;							    	}		       				}    					return true;					}			} 		function add_html_image($file, $name = '',    							$c_type='application/octet-stream')			{		  		$this->html_images[] = array( 'body'   => $file,                		                     'name'   => $name,                        		             'c_type' => $c_type,					                          'cid'    => md5(uniqid(time()))										    );			}  		function add_html($html, $text)			{				$this->do_html   = true;    			$this->html      = $html;    			$this->html_text = $text;     			if(is_array($this->html_images) &&       						count($this->html_images) > 0)					{ 				    	foreach($this->html_images as $val) 							{            					$this->html = preg_replace(                				$this->html_images[$val]['name'],                  						'cid:'.$this->html_images[$val]['cid'],                				$this->html);        					}    				}			}  		function add_attachment($file, $name = '', $c_type='application/octet-stream')			{       			$this->parts[] = array( 'body'   => $file,                			         	'name'   => $name,                               			'c_type' => $c_type );			}  		function build_message()			{      			$boundary = '=_'.md5(uniqid(time()));      			$this->headers[] = 'MIME-Version: 1.0';      			$this->headers[] = 'Content-Type: multipart/mixed;'      			.chr(13).chr(10).chr(9).'boundary="'.$boundary.'"';      			$this->multipart = "This is a MIME encoded message.\r\nCreated by html_mime_mail.class.\r\nSee http://www.heyes-computing.net/scripts/ for a copy.\r\n\r\n";       			if(isset($this->do_html) 				      && $this->do_html == 1) 			            $this->build_html($boundary); 		      	if(isset($this->body)        				&& $this->body != '')             			$this->parts[] = array('body' => $this->body, 'name' => '', 'c_type' => 'text/plain');       			for($i=(count($this->parts)-1); $i>=0; $i--)					{            			$this->multipart.= '--'.$boundary."\r\n".$this->build_part($i);      				}      			$this->mime = $this->multipart."--".$boundary."--\r\n";			}  function build_html($orig_boundary){       $sec_boundary = '=_'.md5(uniqid(time()));       $thr_boundary = '=_'.md5(uniqid(time()));        if(count($this->html_images) == 0){               $this->multipart.= '--'.$orig_boundary."\r\n";               $this->multipart.= 'Content-Type: multipart/alternative;'.chr(13).chr(10).chr(9).'boundary="'.$sec_boundary."\"\r\n\r\n\r\n";                $this->multipart.= '--'.$sec_boundary."\r\n";               $this->multipart.= 'Content-Type: text/plain'."\r\n";               $this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";               $this->multipart.= chunk_split(base64_encode($this->html_text))."\r\n\r\n";                $this->multipart.= '--'.$sec_boundary."\r\n";               $this->multipart.= 'Content-Type: text/html'."\r\n";               $this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";               $this->multipart.= chunk_split(base64_encode($this->html))."\r\n\r\n";               $this->multipart.= '--'.$sec_boundary."--\r\n\r\n";       }else{               $this->multipart.= '--'.$orig_boundary."\r\n";               $this->multipart.= 'Content-Type: multipart/related;'.chr(13).chr(10).chr(9).'boundary="'.$sec_boundary."\"\r\n\r\n\r\n";                $this->multipart.= '--'.$sec_boundary."\r\n";               $this->multipart.= 'Content-Type: multipart/alternative;'.chr(13).chr(10).chr(9).'boundary="'.$thr_boundary."\"\r\n\r\n\r\n";                $this->multipart.= '--'.$thr_boundary."\r\n";               $this->multipart.= 'Content-Type: text/plain'."\r\n";               $this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";               $this->multipart.= chunk_split(base64_encode($this->html_text))."\r\n\r\n";                $this->multipart.= '--'.$thr_boundary."\r\n";               $this->multipart.= 'Content-Type: text/html'."\r\n";               $this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";               $this->multipart.= chunk_split(base64_encode($this->html))."\r\n\r\n";               $this->multipart.= '--'.$thr_boundary."--\r\n\r\n";                for($i=0; $i<count($this->html_images); $i++){                       $this->multipart.= '--'.$sec_boundary."\r\n";                       $this->build_html_image($i);               }                $this->multipart.= "--".$sec_boundary."--\r\n\r\n";       }}  function build_html_image($i){        $this->multipart.= 'Content-Type: '.$this->html_images[$i]['c_type'];        if($this->html_images[$i]['name'] != '') $this->multipart .= '; name="'.$this->html_images[$i]['name']."\"\r\n";       else $this->multipart .= "\r\n";        $this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n";       $this->multipart.= 'Content-ID: <'.$this->html_images[$i]['cid'].">\r\n\r\n";       $this->multipart.= chunk_split(base64_encode($this->html_images[$i]['body']))."\r\n";}  function build_part($i){       $message_part = '';       $message_part.= 'Content-Type: '.$this->parts[$i]['c_type'];        if($this->parts[$i]['name'] != '') {               $message_part .= '; name="'.$this->parts[$i]['name']."\"\r\n";       } else {               $message_part .= "\r\n";       }        if($this->parts[$i]['c_type'] == 'text/plain'){                $message_part.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";               $message_part.= chunk_split(base64_encode($this->parts[$i]['body']))."\r\n";        }else {                $message_part.= 'Content-Transfer-Encoding: base64'."\r\n";               $message_part.= 'Content-Disposition: attachment; filename="'.$this->parts[$i]['name']."\"\r\n\r\n";               $message_part.= chunk_split(base64_encode($this->parts[$i]['body']))."\r\n";        }        return $message_part;}   function send($to_name, $to_addr, $from_name, $from_addr, $subject = ''){   if($to_name != '') {      $to = '"'.$to_name.'" <'.$to_addr.'>';   } else {      $to = $to_addr;   }  if($from_name != '') {      $from = '"'.$from_name.'" <'.$from_addr.'>';   } else {      $from = $from_addr;   }  mail($to, $subject, $this->mime,'From: '.$from."\r\n");}} // End of class.   #######################################  // index.php: 			require_once("class.php");		    $save = new html_mime_mail ($test);  // ---------------############# $to_name = "test";$to_addr = "test@test.com"; $from_name = "test";$from_addr = "test@test.com"; $subject = "Does it work?";   if($save->send($to_name, $to_addr, $from_name, $from_addr, $subject = '') == true)						{  echo "The e-mail is sent";} ?>