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 相关文章推荐
做一个有下拉功能的留言版
Oct 09 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
Java中final关键字详解
Aug 10 PHP
php实现简单的MVC框架实例
Sep 23 PHP
php需登录的文件上传管理系统
Mar 21 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php 文件状态缓存带来的问题
2008/12/14 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
PHP xpath()函数讲解
2019/02/11 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
js 页面输出值
2008/11/30 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
python数据清洗系列之字符串处理详解
2017/02/12 Python
python妙用之编码的转换详解
2017/04/21 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
详解Python静态网页爬取获取高清壁纸
2019/04/23 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
Python面向对象实现方法总结
2020/08/12 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
C++面试题目
2013/06/25 面试题
日期和时间问题
2015/01/04 面试题
大四本科生的自我评价
2013/12/30 职场文书
研究生毕业自我鉴定范文
2014/03/27 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
apache ftpserver搭建ftp服务器
2022/05/20 Servers