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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
支持php4、php5的mysql数据库操作类
Jan 10 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php商品对比功能代码分享
Sep 24 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
php中使用GD库做验证码
Mar 31 PHP
php时间计算相关问题小结
May 09 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
flask-restful使用总结
2018/12/04 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
四年级评语大全
2014/04/21 职场文书
活动策划求职信模板
2014/04/21 职场文书
公司担保书格式范文
2014/05/12 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
初中差生评语
2014/12/29 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书