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相关资料
Oct 09 PHP
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
PHP文件上传原理简单分析
May 29 PHP
探讨如何把session存入数据库
Jun 07 PHP
destoon各类调用汇总
Jun 20 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
解决laravel5.4下的group by报错的问题
Oct 16 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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
php数组编码转换示例详解
2014/03/11 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
判断用户是否在线的代码
2011/03/05 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
javascript仿百度输入框提示自动下拉补全
2016/01/07 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
详解Vue中过度动画效果应用
2017/05/25 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
python绘图方法实例入门
2015/05/19 Python
python 创建一维的0向量实例
2019/12/02 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
毕业生就业自荐书
2013/12/15 职场文书
金融管理专业求职信
2014/07/10 职场文书
党员十八大心得体会
2014/09/12 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
居委会工作总结2015
2015/05/18 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
放假通知怎么写
2015/08/18 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python