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

来源:互联网 发布:mac 将wma转换成mp3 编辑:程序博客网 时间:2024/05/22 03:52

1      最近准备改改自己的个人主页,加上发邮件到功能,发现居然不是那么好用。gmail和msn可以收到邮件,但是163/sina/sohu的邮箱居然都收不到,非常郁闷。其实代码也很简单。 php manual 已经说得相当清楚了。

      但是,如果我使用Linux Shell 的mail命令是可以发送成功的,不过多加了一条-f 参数伪造发件人。这是唯一的不同,于是maillog 的其中一个字段ctladdr显示也不一样。不再是apache用户,我怀疑163等国内的邮件服务提供商,把所有的apache的用户的邮件当成垃圾邮件处理掉了。

      根源找到,于是问题就很好解决了,查一下php的手册,发现mail函数原来也是可以伪造发件人的。

     bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

     在第六个参数additional_parameters使用额外的参数"-f sender_addr@mydomain.com", 问题就解决了。

      

程序:

              $email=$_POST['email'];
              $title='易物天下商城重置密码(系统邮件请勿回复)';
              $findPwd_url=$co->WEBSITE_URL.'/member_login1?mid='.base64_encode($_POST['phone']).'&out='.base64_encode(time());           
              $content="尊敬的会员:
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您好! <br/>
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是一封密码重置邮件。如果您并未尝试修改密码,请忽略本邮件。<br/>
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您可以通过点击以下链接重置帐户密码(基于安全考虑,本链接24小时内有效)。                              <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$findPwd_url."    <br/>
                           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果您不能点击以上链接,请将该链接复制到浏览器地址栏中访问。 <br/>
                        客服热线:400-688-3913";
              
              $headers = "MIME-Version: 1.0" . "\r\n";
              $headers .= "Content-type:text/html;charset=gbk" . "\r\n";
              $headers .="From:sever.register@i1515.com\r\nReply-To: {$email}";           
        
          // $data['status']= mail($email,$title,$content,$headers,'-f hxg@i1515.com')?1:0;
             $data['status']=mail($email,$title,$content,$headers)?1:0;
                    
2.在服务器上配置代理

0 0