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

代码如下:

// 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", 问题就解决了。

(0)

相关推荐

  • PHP实现163邮箱自动发送邮件

    163邮箱大家都使用过吧,那么基于php如何实现163邮箱自动发送邮件功能呢,下面我们小编给大家分享具体实现代码: 想给大家展示下效果图: demo.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http:/

  • PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法

    本文实例讲述了PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php     header("Content-Type: text/html; charset=UTF-8");     error_reporting(0);     /**      * 登陆      * $user 163用户名      * $pass 密码     **/     function login($user,$pass

  • 163的邮件用phpmailer发送(实例详解)

    复制代码 代码如下: <?phprequire_once('../class.phpmailer.php');$mail= new PHPMailer();$body= "我终于发送邮件成功了!呵呵!<br/><a>http://news.qq.com/a/20111115/000792.htm?qq=0&ADUIN=594873950&ADSESSION=1321316731&ADTAG=CLIENT.QQ.3493_.0</a>

  • thinkphp实现163、QQ邮箱收发邮件的方法

    用了很长时间去一步一步摸索,终于先在163 网易邮箱上测试成功了,下面就把这个过程分享给大家. 在进入正题这前先看下网易(163)邮箱的服务器地址和端口号: 一.前期准备 使用网易邮箱,当然要注册个账号,这个就不用我多说了,自己去注册... 注册完之后,就要去开启 POP3/SMTP/IMAP服务. 在开启服务时,需要客户端授权密码(这里需要手机验证,MD拐弯抹角的要手机号码). 步骤一: 步骤二: 确定后会弹出下面这样的对话框,也会把这个授权密码发送你的短信里,记住这个授权密码一定要记住 服务

  • PHPMailer邮件类利用smtp.163.com发送邮件方法

    第一步:需要下载PHPMailer文件包phpmailer-1.73.tar.gz 来自开源社区: http://phpmailer.sourceforge.net/ 第二步:确认你的服务器系统已经支持socket 如下图,通过phpinfo();查看是否支持sockets 如果没有这一项就请注意: socket 是属于PHP扩展部分,编译时必须给定一个用于./configure --enable-sockets 的配置选项. 第三步:把文件解压到你的web服务器目录下,调用类就可以了,说明:首

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

    复制代码 代码如下: // 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 Au

  • php中mail函数发送邮件失败的解决方法

    本文实例讲述了php中mail函数发送邮件失败的解决方法.分享给大家供大家参考.具体分析如下: php中mail函数是一个自带的发邮件的函数,但是如果你真的要使用mail函数来发邮件那必须是要给你系统安装sendmail组件才可以,下面我就碰到mail发送不了邮件的问题,下面一起来看看解决办法吧. 之前的那台服务器转移过来后,发现网站用mail()发送邮件发不了,但是发现sendmail明明已经安装,如果没有安装sendmail可以执行,代码如下: 复制代码 代码如下: yum install

  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的.最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在. 1.使用 PEAR 的 Mail 类 PEAR 的 Mail 类可以让你选择使用 sendmail 或者 SMTP 方式发信,这样的包装好的接口很好用,你没有必要去自己重新发明轮子. 2.关于headers 中subject 的乱码 不要把任何除了 iso-8859-1 编码之外的文字

  • 解决pycharm不能自动补全第三方库的函数和属性问题

    因为python是动态语言,变量类型是可变的,所以不管pycharm还是sublime都做不到准确的类型推断. 一个比较取巧的做法是assert assert isinstance(a, A_type) a.<TAB> # 可以补全 补充知识:pycharm 第三方库函数无代码提示解决方案 问题描述 呃呃呃,想使用urllib库进行HTTP 调用,然后发现有些地方没有代码提示...这就很难受了,我根本不清楚API的,你不给我一点提示就过分了呀!!! from urllib import req

  • Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题

    如果需要用php的mail()函数来发送邮件,是需要服务器安装sendmail组件才能支持的,这个在php的手册中mail()函数部分也有介绍到.然后在 在Ubuntu下安装sendmail的命令: 复制代码 代码如下: sudo apt-get install sendmail 安装好之后,启动sendmail服务: 复制代码 代码如下: sudo service sendmail start 有了sendmail的支持,就可以在php中用mail()函数发送邮件了. 一般造成在php用mai

  • javascript 解决表单仍然提交即使监听处理函数返回false

    复制代码 代码如下: <form action="http://www.jb51.net" id="form"> <input type="text" /> <input type="submit" /> </form> <script> var code = function () { return false; }; var element = window.do

  • Python SMTP发送邮件遇到的一些问题及解决办法

    Python练习内容: SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send by Python...', 'plain', 'utf-8') 注意到构

  • form+iframe解决跨域上传文件的方法

    (1)  jsp代码: <form id="form" name="form" enctype="multipart/form-data" method="post" target="hidden_frame"> <table style="border:0;width:100%;text-align:middle;"> <tr style="bo

  • 完美解决Thinkphp3.2中插入相同数据的问题

    问题描述 今天在使用TP3.2插入数据的时候,为了避免插入相同的数据(所谓相同的数据,其主键相同或者是唯一索引的字段相同),我创建的索引如下图,主键索引为自增字段,不可能出现重复,即唯一索引可能会出现重复,我希望的是uid,year,mounth,day 这三个字段出现相同的话,就更新当前记录. 问题解决办法 在之前面对这样的问题的时候,我们知道,MySQL提供了ON DUPLICATE KEY UPDATE或者REPLACE INTO来解决. 使用ON DUPLICATE KEY UPDATE

随机推荐