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 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
TP5框架实现签到功能的方法分析
Apr 05 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
图片上传判断及预览脚本的效果实例
2013/08/07 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
angular 内存溢出的问题解决
2018/07/12 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python 项目转化为so文件实例
2019/12/23 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
python如何快速拼接字符串
2020/10/28 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
办公室前台的岗位职责
2013/12/20 职场文书
眼镜促销方案
2014/03/15 职场文书
预备党员综合考察材料
2014/05/31 职场文书
机关副主任个人四风问题整改措施
2014/09/26 职场文书
法院个人总结
2015/03/03 职场文书
见习期个人总结
2015/03/05 职场文书
草房子读书笔记
2015/06/29 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis