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分页函数
Jul 08 PHP
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
详细解读php的命名空间(二)
Feb 21 PHP
PHP7内核之Reference详解
Mar 14 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 PHP
php屏蔽错误及提示的方法
May 10 PHP
phpStorm2020 注册码
Sep 17 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与SQL注入攻击[二]
2007/04/17 PHP
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
javascript实现的listview效果
2007/04/28 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
python实现按首字母分类查找功能
2019/10/31 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
班级入场式解说词
2014/02/01 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书