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代码
Apr 09 PHP
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
PHP网站基础优化方法小结
Sep 29 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
php实现兼容2038年后Unix时间戳转换函数
Mar 18 PHP
php实现点击可刷新验证码
Nov 07 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
Laravel下生成验证码的类
Nov 15 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
解决Laravel使用验证时跳转到首页的问题
Nov 17 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 flv视频时间获取函数
2010/06/29 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
jquery实现图片放大点击切换
2017/06/06 jQuery
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
德国家具折扣店:POCO
2020/02/28 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
自我鉴定范文300字
2013/10/01 职场文书
上班打牌检讨书
2014/02/07 职场文书
2014年征兵标语
2014/06/20 职场文书
电子商务专业求职信
2014/07/10 职场文书
庆七一活动总结
2014/08/27 职场文书
雨中的树观后感
2015/06/03 职场文书
长征观后感
2015/06/09 职场文书
学习经验交流会总结
2015/11/02 职场文书