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 相关文章推荐
转PHP手册及PHP编程标准
Dec 17 PHP
PHP用mysql数据库存储session的代码
Mar 05 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
php checkbox 取值详细说明
Aug 19 PHP
php获取目标函数执行时间示例
Mar 04 PHP
PHP四大安全策略
Mar 12 PHP
如何使用纯PHP实现定时器任务(Timer)
Jul 31 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 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
php session 检测和注销
2009/03/16 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
基于swoole实现多人聊天室
2018/06/14 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
js渐变显示渐变消失示例代码
2013/08/01 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
python读写文件操作示例程序
2013/12/02 Python
Python collections模块实例讲解
2014/04/07 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
积极分子思想汇报
2014/01/04 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
体育运动会广播稿
2014/10/05 职场文书
计算机实训报告总结
2014/11/05 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
python文件目录操作之os模块
2021/05/08 Python
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android