当前位置:首页 > PHP教程 > php类库 > 列表

php实现的发送带附件邮件类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-13 21:56:31 浏览: 评论:0 

这篇文章主要介绍了php实现的发送带附件邮件类,是php程序设计中非常常见的实用技巧,实例演示了邮件类及对应的demo示例,需要的朋友可以参考下

本文实例讲述了php实现的发送带附件邮件类的方法,是一个非常实用的功能。分享给大家供大家参考。具体方法如下:

emailclass.php类文件如下:

  1. <?  
  2. class CMailFile {   
  3.    
  4.   var $subject;   
  5.   var $addr_to;   
  6.   var $text_body;   
  7.   var $text_encoded;   
  8.   var $mime_headers;   
  9.   var $mime_boundary = "--==================_846811060==_";   
  10.   var $smtp_headers;   
  11.      
  12.   function CMailFile($subject,$to,$from,$msg,$filename,$downfilename,$mimetype = "application/octet-stream",$mime_filename = false) {   
  13.     $this->subject = $subject;      
  14.     $this->addr_to = $to;      
  15.     $this->smtp_headers = $this->write_smtpheaders($from);  
  16.     $this->text_body = $this->write_body($msg);  
  17.     $this->text_encoded = $this->attach_file($filename,$downfilename,$mimetype,$mime_filename);  
  18.     $this->mime_headers = $this->write_mimeheaders($filename$mime_filename);  
  19.   }   
  20.    
  21.   function attach_file($filename,$downfilename,$mimetype,$mime_filename) {  
  22.     $encoded = $this->encode_file($filename);  
  23.     if ($mime_filename$filename = $mime_filename;  
  24.     $out = "--" . $this->mime_boundary . "\n";  
  25.     $out = $out . "Content-type: " . $mimetype . "; name=\"$filename\";\n";  
  26.     $out = $out . "Content-Transfer-Encoding: base64\n";  
  27.     $out = $out . "Content-disposition: attachment; filename=\"$downfilename\"\n\n";  
  28.     $out = $out . $encoded . "\n";  
  29.     $out = $out . "--" . $this->mime_boundary . "--" . "\n";  
  30.     return $out;  
  31.   }   
  32.    
  33.   function encode_file($sourcefile) {   
  34.     if (is_readable($sourcefile)) {   
  35.       $fd = fopen($sourcefile"r");   
  36.       $contents = fread($fdfilesize($sourcefile));   
  37.       $encoded = chunk_split(base64_encode($contents));   
  38.       fclose($fd);   
  39.     }   
  40.     return $encoded;   
  41.   }   
  42.    
  43.   function sendfile() {    
  44.     $headers = $this->smtp_headers . $this->mime_headers;   
  45.     $message = $this->text_body . $this->text_encoded;   
  46.     mail($this->addr_to,$this->subject,$message,$headers);   
  47.   }   
  48.    
  49.   function write_body($msgtext) {   
  50.     $out = "--" . $this->mime_boundary . "\n";   
  51.     $out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";   
  52.     $out = $out . $msgtext . "\n";   
  53.     return $out;   
  54.   }   
  55.    
  56.   function write_mimeheaders($filename$mime_filename) {   
  57.     if ($mime_filename$filename = $mime_filename;   
  58.     $out = "MIME-version: 1.0\n";   
  59.     $out = $out . "Content-type: multipart/mixed; ";   
  60.     $out = $out . "boundary=\"$this->mime_boundary\"\n";   
  61.     $out = $out . "Content-transfer-encoding: 7BIT\n";   
  62.     $out = $out . "X-attachments: $filename;\n\n";   
  63.     return $out;   
  64.   }   
  65.    
  66.   function write_smtpheaders($addr_from) {   
  67.     $out = "From: $addr_from\n";   
  68.     $out = $out . "Reply-To: $addr_from\n";   
  69.     $out = $out . "X-Mailer: PHP3\n";   
  70.     $out = $out . "X-Sender: $addr_from\n";   
  71.     return $out;   
  72.   }   
  73. }   
  74.    
  75. /*用法 - 例如:mimetype 为 "image/gif"  
  76.   $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);  
  77.   $mailfile->sendfile();  
  78.    
  79.   $subject -- 主题  
  80.   $sendto -- 收信人地址  
  81.   $replyto -- 回复地址  
  82.   $message -- 信件内容  
  83.   $filename -- 附件文件名  
  84.   $downfilename -- 下載的文件名  
  85.   $mimetype -- mime类型  
  86. */ 
  87. ?> 

Demo示例文件如下:

  1. <?php  
  2.   require_once('emailclass.php');  
  3.    
  4.   //发送邮件  
  5.      
  6.   //主題  
  7.   $subject = "test send email";  
  8.    
  9.   //收件人  
  10.   $sendto = 'abc@163.com';  
  11.      
  12.   //發件人  
  13.   $replyto = 'cdf@163.com';  
  14.      
  15.   //內容  
  16.   $message = "test send email content";  
  17.      
  18.   //附件  
  19.   $filename = 'test.jpg';  
  20.      
  21.   //附件類別  
  22.   $mimetype = "image/jpeg";  
  23.    
  24.   $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$excelname,$mimetype);   
  25.   $mailfile->sendfile();  
  26. ?> 

相信本文所述对大家php程序设计的学习有一定的借鉴价值。

Tags: php邮件类

分享到:

相关文章