繁体中文
设为首页
加入收藏
当前位置:PHP技术首页 >> PHP基础 >> 我自己借用精华区里的MIME类写了一个基本的发信小东东(2)

我自己借用精华区里的MIME类写了一个基本的发信小东东(2)

2005-02-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:sendmail.PHP4 add_attachment($attachment, $myfile_name, 'application/octet-stream'); /*---------------------这段示范了如何发HTML信件--------------------------------------- $filename = 'background....

sendmail.PHP4

add_attachment($attachment, $myfile_name, 'application/octet-stream');

/*---------------------这段示范了如何发HTML信件---------------------------------------

$filename = 'background.gif';

$backgrnd = fread($fp = fopen($filename, 'r'), filesize($filename));

fclose($fp);

$text = 'This is a test.';

$HTML = ' Success!

';

$mail->add_HTML_image($backgrnd, 'background.gif', 'image/gif');

$mail->add_HTML($HTML, $text);

-------------------------------------------------------------------------------------*/

//读取正文,将信件封装并发送

$mail->body=$bodytext;

$mail->build_message();

$backvalue=$mail->send(' ',$receivemailbox,' ',$sendmailbox,$subject,' ');

//发送提示信息

echo "";

}

}

?>

HTML_mime_mail.inc 这个类是精华区里有的。我借来一用

headers = $headers;

}

/***************************************

** Adds a HTML part to the mail.

** Also replaces image names with

** content-id's.

***************************************/

function add_HTML($HTML, $text){

$this->do_HTML = 1;

$this->HTML = $HTML;

$this->HTML_text = $text;

if(is_array($this->html_images) AND count($this->html_images) > 0){

for($i=0; $iHTML_images); $i++){

$this->html = ereg_replace($this->html_images[$i]['name'], 'cid:'.$this->html_images[$i]['cid'], $this->HTML);

}

}

}

/***************************************

** Builds HTML part of email.

***************************************/

function build_HTML($orig_boundary){

$sec_boundary = '=_'.md5(uniqid(time()));

$thr_boundary = '=_'.md5(uniqid(time()));

if(!is_array($this->HTML_images)){

$this->multipart.= '--'.$orig_boundary."\r\n";

$this->multipart.= 'Content-Type: multipart/alternative; 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: 7bit'."\r\n\r\n";

$this->multipart.= $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: 7bit'."\r\n\r\n";

$this->multipart.= $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; boundary="'.$sec_boundary."\"\r\n\r\n\r\n";

$this->multipart.= '--'.$sec_boundary."\r\n";

$this->multipart.= 'Content-Type: multipart/alternative; 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: 7bit'."\r\n\r\n";

$this->multipart.= $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: 7bit'."\r\n\r\n";

$this->multipart.= $this->HTML."\r\n\r\n";

$this->multipart.= '--'.$thr_boundary."--\r\n\r\n";

for($i=0; $iHTML_images); $i++){

$this->multipart.= '--'.$sec_boundary."\r\n";

$this->build_HTML_image($i);

}

$this->multipart.= "--".$sec_boundary."--\r\n\r\n";

}

}

/***************************************

** Adds an image to the list of embedded

** images.

***************************************/

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())) );

}

/***************************************

** Adds a file to the list of attachments.

***************************************/

function add_attachment($file, $name = '', $c_type='application/octet-stream'){

$this->parts[] = array( 'body' => $file,

'name' => $name,

'c_type' => $c_type );

}

/***************************************

** Builds an embedded image part of an

** HTML mail.

***************************************/

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-ID: html_images[$i]['cid'].">\r\n";

$this->multipart.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";

$this->multipart.= chunk_split(base64_encode($this->HTML_images[$i]['body']))."\r\n";

}

/***************************************

** Builds a single part of a multipart

** message.

***************************************/

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";

// Determine content encoding.

if($this->parts[$i]['c_type'] == 'text/plain'){

$message_part.= 'Content-Transfer-Encoding: 7bit'."\r\n\r\n";

$message_part.= $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;

}

/***************************************

** Builds the multipart message from the

** list ($this->parts).

***************************************/

function build_message(){

$boundary = '=_'.md5(uniqid(time()));

$this->headers.= "MIME-Version: 1.0\r\n";

$this->headers.= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";

$this->multipart = '';

$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) AND $this->do_html == 1) $this->build_HTML($boundary);

if(isset($this->body) AND $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";

}

/***************************************

** Sends the mail.

***************************************/

function send($to_name, $to_addr, $from_name, $from_addr, $subject = '', $headers = ''){

if($to_name != '') $to = '"'.$to_name.'" ';

else $to = $to_addr;

if($from_name != '') $from = '"'.$from_name.'" ';

else $from = $from_addr;

$this->headers.= 'From: '.$from."\r\n";

//$this->headers.= $headers;

mail($to, $subject, $this->mime, $this->headers);

}

/***************************************

** Use this method to deliver using direct

** smtp connection. Relies upon Manuel Lemos'

** smtp mail delivery class available at:

** http://PHPclasses.upperdesign.com

**

** void smtp_send( string *Name* of smtp object,

** string From address,

** array To addresses,

** array Headers,

** string The body)

***************************************/

function smtp_send($smtp_obj, $from_addr, $to_addr){

global $$smtp_obj;

$smtp_obj = $$smtp_obj;

if(substr($this->headers, -2) == "\r\n") $this->headers = substr($this->headers,0,-2);

$this->headers = explode("\r\n", $this->headers);

$smtp_obj->sendmessage($from_addr, $to_addr, $this->headers, $this->mime);

}

} // End of class.

?>

责任编辑:admin
相关文章