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下使用SimpleXML 处理XML 文件
Feb 27 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php时区转换转换函数
Jan 07 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
laravel批量生成假数据的方法
Oct 09 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的FTP学习(三)
2006/10/09 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
yii中widget的用法
2014/12/03 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
python线程池的实现实例
2013/11/18 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Django xadmin安装及使用详解
2020/10/26 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
数控专业大学生的自我鉴定
2013/11/13 职场文书
管理科学大学生求职信
2013/11/13 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫