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


Posted in PHP onSeptember 22, 2014

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

emailclass.php类文件如下:

<? 
class CMailFile {  
 
  var $subject;  
  var $addr_to;  
  var $text_body;  
  var $text_encoded;  
  var $mime_headers;  
  var $mime_boundary = "--==================_846811060==_";  
  var $smtp_headers;  
   
  function CMailFile($subject,$to,$from,$msg,$filename,$downfilename,$mimetype = "application/octet-stream",$mime_filename = false) {  
    $this->subject = $subject;     
    $this->addr_to = $to;     
    $this->smtp_headers = $this->write_smtpheaders($from); 
    $this->text_body = $this->write_body($msg); 
    $this->text_encoded = $this->attach_file($filename,$downfilename,$mimetype,$mime_filename); 
    $this->mime_headers = $this->write_mimeheaders($filename, $mime_filename); 
  }  
 
  function attach_file($filename,$downfilename,$mimetype,$mime_filename) { 
    $encoded = $this->encode_file($filename); 
    if ($mime_filename) $filename = $mime_filename; 
    $out = "--" . $this->mime_boundary . "\n"; 
    $out = $out . "Content-type: " . $mimetype . "; name=\"$filename\";\n"; 
    $out = $out . "Content-Transfer-Encoding: base64\n"; 
    $out = $out . "Content-disposition: attachment; filename=\"$downfilename\"\n\n"; 
    $out = $out . $encoded . "\n"; 
    $out = $out . "--" . $this->mime_boundary . "--" . "\n"; 
    return $out; 
  }  
 
  function encode_file($sourcefile) {  
    if (is_readable($sourcefile)) {  
      $fd = fopen($sourcefile, "r");  
      $contents = fread($fd, filesize($sourcefile));  
      $encoded = chunk_split(base64_encode($contents));  
      fclose($fd);  
    }  
    return $encoded;  
  }  
 
  function sendfile() {   
    $headers = $this->smtp_headers . $this->mime_headers;  
    $message = $this->text_body . $this->text_encoded;  
    mail($this->addr_to,$this->subject,$message,$headers);  
  }  
 
  function write_body($msgtext) {  
    $out = "--" . $this->mime_boundary . "\n";  
    $out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";  
    $out = $out . $msgtext . "\n";  
    return $out;  
  }  
 
  function write_mimeheaders($filename, $mime_filename) {  
    if ($mime_filename) $filename = $mime_filename;  
    $out = "MIME-version: 1.0\n";  
    $out = $out . "Content-type: multipart/mixed; ";  
    $out = $out . "boundary=\"$this->mime_boundary\"\n";  
    $out = $out . "Content-transfer-encoding: 7BIT\n";  
    $out = $out . "X-attachments: $filename;\n\n";  
    return $out;  
  }  
 
  function write_smtpheaders($addr_from) {  
    $out = "From: $addr_from\n";  
    $out = $out . "Reply-To: $addr_from\n";  
    $out = $out . "X-Mailer: PHP3\n";  
    $out = $out . "X-Sender: $addr_from\n";  
    return $out;  
  }  
}  
 
/*用法 - 例如:mimetype 为 "image/gif" 
  $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype); 
  $mailfile->sendfile(); 
 
  $subject -- 主题 
  $sendto -- 收信人地址 
  $replyto -- 回复地址 
  $message -- 信件内容 
  $filename -- 附件文件名 
  $downfilename -- 下?的文件名 
  $mimetype -- mime类型 
*/ 
?>

Demo示例文件如下:

<?php 
  require_once('emailclass.php'); 
 
  //发送邮件 
   
  //主? 
  $subject = "test send email"; 
 
  //收件人 
  $sendto = 'abc@163.com'; 
   
  //?件人 
  $replyto = 'cdf@163.com'; 
   
  //?热 
  $message = "test send email content"; 
   
  //附件 
  $filename = 'test.jpg'; 
   
  //附件??e 
  $mimetype = "image/jpeg"; 
 
  $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$excelname,$mimetype);  
  $mailfile->sendfile(); 
?>

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

PHP 相关文章推荐
isset和empty的区别
Jan 15 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
Session保存到数据库的php类分享
Oct 24 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
如何实现php图片等比例缩放
Jul 28 PHP
PHP在线书签系统分享
Jan 04 PHP
php快速排序原理与实现方法分析
May 26 PHP
PHP中overload与override的区别
Feb 13 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 PHP
PHP实现AES256加密算法实例
Sep 22 #PHP
php生成QRcode实例
Sep 22 #PHP
php实现的Captcha验证码类实例
Sep 22 #PHP
php中unserialize返回false的解决方法
Sep 22 #PHP
php实现根据字符串生成对应数组的方法
Sep 22 #PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 #PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 #PHP
You might like
关于Intype一些小问题的解决办法
2008/03/28 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python logging日志模块以及多进程日志详解
2018/04/18 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
元旦晚会主持词
2014/03/24 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
村委会贫困证明范本
2014/09/17 职场文书
房产公证书
2015/01/23 职场文书
企业团队精神心得体会
2016/01/19 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
python字典的元素访问实例详解
2021/07/21 Python