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的FTP学习(四)
Oct 09 PHP
php仿ZOL分页类代码
Oct 02 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
分享3个php获取日历的函数
Sep 25 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
swoole锁的机制代码实例讲解
Mar 04 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+mysql一个名片库程序
2006/10/09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php实现简单文件下载的方法
2015/01/30 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
JSONP跨域请求
2017/03/02 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
React Native时间转换格式工具类分享
2017/10/24 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
模范教师事迹材料
2014/02/10 职场文书
企业法人授权委托书
2014/09/25 职场文书
流动人口婚育证明
2014/10/19 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
Python多线程 Queue 模块常见用法
2021/07/04 Python
mysql事务对效率的影响分析总结
2021/10/24 MySQL