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 相关文章推荐
PHP 面向对象 PHP5 中的常量
May 05 PHP
PHP学习之正则表达式
Apr 17 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
8个PHP程序员常用的功能汇总
Dec 18 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
Jun 29 PHP
PHP实现简单ajax Loading加载功能示例
Dec 28 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 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
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
Python 中的lambda函数介绍
2018/10/10 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
如何查找网页漏洞
2016/06/22 面试题
Servlet面试题库
2015/07/18 面试题
保护环境倡议书
2014/04/14 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS