解决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 之 没有mysql支持时的替代方案
Oct 09 PHP
PHP生成UTF8文件的方法
May 15 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 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语法(2)
2006/10/09 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
JavaScript错误处理操作实例详解
2019/01/04 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
微信小程序引入Vant组件库过程解析
2019/08/06 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
Python的面向对象编程方式学习笔记
2016/07/12 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python如何写try语句
2020/07/14 Python
如何利用python生成MD5并去重
2020/12/07 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
安全生产会议制度
2015/08/06 职场文书
java基础——多线程
2021/07/03 Java/Android