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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
PHP mkdir()无写权限的问题解决方法
Jun 19 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
PHP自定义多进制的方法
Nov 03 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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
Smarty Foreach 使用说明
2010/03/23 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Fabric 应用案例
2016/08/28 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
python 接口返回的json字符串实例
2018/03/27 Python
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
商场拾金不昧表扬信
2014/01/13 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
教师教育心得体会
2016/01/19 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server