解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题


Posted in PHP onMarch 13, 2009
// multiple recipients 
$to = 'aidan@example.com' . ', '; // note the comma 
$to .= 'wez@example.com'; 
// subject 
$subject = 'Birthday Reminders for August'; 
// message 
$message = ' 
<html> 
<head> 
<title>Birthday Reminders for August</title> 
</head> 
<body> 
<p>Here are the birthdays upcoming in August!</p> 
<table> 
<tr> 
<th>Person</th><th>Day</th><th>Month</th><th>Year</th> 
</tr> 
<tr> 
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td> 
</tr> 
<tr> 
<td>Sally</td><td>17th</td><td>August</td><td>1973</td> 
</tr> 
</table> 
</body> 
</html> 
'; 
// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
// Additional headers 
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n"; 
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n"; 
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; 
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n"; 
// Mail it 
mail($to, $subject, $message, $headers);

查看sendmail的maillog,发现奇怪的内容。
Mar 1 11:28:03 <a title="shaohui" href="http://www.shaohui.org" target="_blank">shaohui</a>.org sendmail[27526]: n213S1Xc027524: to=<shaohui_1983@163.com>, ctladdr=<shaohui@shaohui.org> (500/500), delay=00:00:02, xdelay=00:00:01, mailer=esmtp, pri=150812, relay=163mx03.mxmail.netease.com. [220.181.12.72], dsn=5.0.0, stat=Service unavailable

但是,如果我使用Linux Shell 的mail命令是可以发送成功的,不过多加了一条-f 参数伪造发件人。这是唯一的不同,于是maillog 的其中一个字段ctladdr显示也不一样。不再是apache用户,我怀疑163等国内的邮件服务提供商,把所有的apache的用户的邮件当成垃圾邮件处理掉了。
Feb 25 23:44:59 <a title="shaohui" href="http://www.shaohui.org" target="_blank">shaohui</a> sendmail[13067]: n1PFixH4013067: to=shaohui_1983@163.com, ctladdr=contact@shaohui.org (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30869, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (n1PFixdx013068 Message accepted for delivery)

根源找到,于是问题就很好解决了,查一下php的手册,发现mail函数原来也是可以伪造发件人的。
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

在第六个参数additional_parameters使用额外的参数"-f sender_addr@mydomain.com", 问题就解决了。
PHP 相关文章推荐
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
初识PHP中的Swoole
Apr 05 PHP
php文件上传后端处理小技巧
May 22 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
Jun 11 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
Jan 21 PHP
解决php扩展安装不生效问题
Oct 25 PHP
laravel通用化的CURD的实现
Dec 13 PHP
PHP 文件类型判断代码
Mar 13 #PHP
php discuz 主题表和回帖表的设计
Mar 13 #PHP
php 获取mysql数据库信息代码
Mar 12 #PHP
php 删除记录实现代码
Mar 12 #PHP
php 异常处理实现代码
Mar 10 #PHP
php 表单数据的获取代码
Mar 10 #PHP
php URL编码解码函数代码
Mar 10 #PHP
You might like
PHP 文件系统详解
2012/09/13 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
2010/08/05 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
详解JavaScript中的this指向问题
2021/02/05 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python逐行读写txt文件的实例讲解
2018/04/03 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
酒吧总经理岗位职责
2013/12/10 职场文书
经典广告词大全
2014/03/14 职场文书
产品质量承诺范本
2014/03/31 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android