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_Flame(Version:Progress)的原代码
Oct 09 PHP
实现分十页分向前十页向后十页的处理
Oct 09 PHP
优化PHP代码的53条建议
Mar 27 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
PHP程序员的技术成长规划
Mar 25 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
实例讲解PHP表单
Jun 10 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 Hex RGB颜色值互换的使用
2013/05/10 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
python简单猜数游戏实例
2015/07/09 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python可变参数用法实例分析
2017/04/02 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
自我评价中英文语句
2013/11/30 职场文书
管理学专业个人求职信范文
2013/12/13 职场文书
经济管理专业自荐信
2013/12/30 职场文书
2014年外联部工作总结
2014/11/17 职场文书
教师辞职信范文
2015/02/28 职场文书
少年犯观后感
2015/06/11 职场文书
nginx优化的六点方法
2021/03/31 Servers
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技