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方法调用模式与函数调用模式简例
Sep 20 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
Jan 14 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
学习php设计模式 php实现状态模式
Dec 07 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
php操作redis数据库常见方法实例总结
Feb 20 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/01/07 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
python机器人行走步数问题的解决
2018/01/29 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
adidas美国官网:adidas US
2016/09/21 全球购物
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
中学生班主任评语
2014/01/30 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
尊师重教演讲稿
2014/09/04 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
学校通报表扬范文
2015/05/04 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
Mysql事务索引知识汇总
2022/03/17 MySQL
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS