解决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之第十天
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
从php核心代码分析require和include的区别
Jan 02 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
php curl 上传文件代码实例
Apr 27 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
thinkphp5使用无限极分类
Feb 18 PHP
PHP中SESSION过期设置
Mar 09 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
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
使用python实现多维数据降维操作
2020/02/24 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
安全生产计划书
2014/05/04 职场文书
考察邀请函范文
2015/01/31 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL