开发者

php mail() doesnt work for gmail and hotmail

I am trying to send new system generated password using mail() in php. The thing is I am able to send it to yahoo but when I use gmail or hotmail I dont receive any emails althou开发者_Python百科gh the function returns true. Following is the function:

if(mail($to,$subject,$body))
{
   return true;
}
else
{
  return false;
}


It probably ends up in the spam folder look there. If its there make sure your email headers are perfect.

You could look into librairies for what you want to achieve. Zend_Mail has everything you could need to connect to gmail and others.


If you are getting the mail successfully through yahoo, you should also post the headers that are coming through from yahoo here in the question. My bet is you will need to include a "from field" also to get through on hotmail, gmail, etc...


Your problem might be the antispam filters. E-mails sent from PHP are usually marked as spam by the mail servers and end up deleted or in the spam can.

You can Google for "php mail spam" to get some hints of how to work around this issue.


Maybe you're on a shared server and the IP is banned/blocked due to spamming by other users (websites) of your server.

Try adding SPF records.


Ensure that your envelope-FROM (a.k.a. return path) is set to a valid email address that you have access to. If you're not seeing the message in the spam folders, it should be getting bounced; the bounce message may offer a clue as to why the mail is not getting through.


I would try to include your own headers in your mail function

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Date: ". date('r'). " \r\n";
$headers .= "Return-Path:youremail@domain.com\r\n";
$headers .= "Errors-To:youremail@domain.com\r\n";
$headers .= "From:youremail@domain.com <youremail@domain.com>\r\n";
$headers .= "Reply-to:youremail@domain.com \r\n";
$headers .= "Organization: YourOrg \r\n";
$headers .= "X-Sender:youremail@domain.com \r\n";
$headers .= "X-Priority: 3 \r\n";
$headers .= "X-MSMail-Priority: Normal \r\n";
$headers .= "X-Mailer: PHP/" . phpversion();

mail($to,$subject,$body,$headers);


Try checking if your mailserver ip is blacklisted anywhere?

  • http://www.mxtoolbox.com/blacklists.aspx

If not, try harder with the headers that are being sent with the mail.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜