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中使用Oracle数据库(3)
Oct 09 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
Yii rules常用规则示例
Mar 15 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
PHP封装curl的调用接口及常用函数详解
May 31 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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
php 异常处理实现代码
2009/03/10 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
2007/11/30 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
js实现日历与定时器
2017/02/22 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
基于zepto.js实现手机相册功能
2017/07/11 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
2020/01/12 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
基于python二叉树的构造和打印例子
2019/08/09 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Python实现京东抢秒杀功能
2021/01/25 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
建筑自我鉴定
2013/10/19 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android