php 发送带附件邮件示例


Posted in PHP onJanuary 23, 2014

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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
php如何实现只替换一次或N次
Oct 29 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
PDO::beginTransaction讲解
Jan 27 PHP
php 获取页面中指定内容的实现类
Jan 23 #PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 #PHP
php 字符串压缩方法比较示例
Jan 23 #PHP
php 生成短网址原理及代码
Jan 23 #PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 #PHP
php弹出对话框实现重定向代码
Jan 23 #PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 #PHP
You might like
Linux Apache PHP Oracle 安装配置(具体操作步骤)
2013/06/17 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
通过js获取div的background-image属性
2013/10/15 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
学习vue.js计算属性
2016/12/03 Javascript
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
使用Python封装excel操作指南
2021/01/29 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
运动会邀请函范文
2014/02/06 职场文书
感恩节活动策划方案
2014/05/16 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
《藏戏》教学反思
2016/02/23 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA
tomcat下部署jenkins的方法
2022/05/06 Servers