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中,文件上传
Dec 06 PHP
PHP中PDO的错误处理
Sep 04 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
详解PHP归并排序的实现
Oct 18 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
PHP多进程编程实例详解
Jul 19 PHP
PHP多维数组排序array详解
Nov 21 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
Prototype Class对象学习
2009/07/19 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
浅析python中的分片与截断序列
2016/08/09 Python
python 函数内部修改外部变量的方法
2018/12/18 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
python中删除某个元素的方法解析
2019/11/05 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
python全栈开发语法总结
2020/11/22 Python
UML设计模式笔试题
2014/06/07 面试题
运动会入场式解说词
2014/02/18 职场文书
数据保密承诺书
2014/06/03 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
暑期实践个人总结
2015/03/06 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
详解java如何集成swagger组件
2021/06/21 Java/Android
Go语言编译原理之变量捕获
2022/08/05 Golang