php实现邮件发送并带有附件


Posted in PHP onJanuary 24, 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); 
} 3water.com
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类型 
*/ 
?>

演示示例

<?php 
require_once('emailclass.php');
//发送邮件
//主? 
$subject = "test send email";
//收件人 
$sendto = 'abc@163.com';
//?件人 
$replyto = 'cdf@163.com';
//?热 3water.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
十天学会php(1)
Oct 09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
Feb 15 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
Linux安装配置php环境的方法
Jan 14 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
php ajax数据传输和响应方法
Aug 21 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 #PHP
php 发送带附件邮件示例
Jan 23 #PHP
php 获取页面中指定内容的实现类
Jan 23 #PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 #PHP
php 字符串压缩方法比较示例
Jan 23 #PHP
php 生成短网址原理及代码
Jan 23 #PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 #PHP
You might like
Views rows style模板重写代码
2011/05/16 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
详解PHP+AJAX无刷新分页实现方法
2015/11/03 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
Javascript的闭包
2009/12/31 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
js实现上传图片预览的方法
2015/02/09 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
携程英文网站:Trip.com
2017/02/07 全球购物
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
《彩色世界》教学反思
2014/04/12 职场文书
党员创先争优心得体会
2014/09/11 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
党员自评材料范文
2014/12/17 职场文书
销售辞职信范文
2015/03/02 职场文书
企业法人任命书
2015/09/21 职场文书