PHP mail()函数不会发送到gmail但会发送到我的非gmail帐户

时间:2012-04-05 01:50:30

标签: php email

由于某些原因,php mail()函数在我正在构建的网站上无法正常工作。我试图将问题排除在最简单的形式之外,并提出了这个文件:

<?php
mail('myEmail@gmail.com', 'the subject', 'the message', 'From: webmaster@example.com', '-fwebmaster@example.com');
?>

当myEmail是一个Gmail帐户时,我从未接收过该消息。但是,当我使用非Gmail帐户时,我确实收到了消息。我不知所措,并尝试了一切来解决这个问题。我开始认为这是一个不起眼的主机/服务器问题。您可以在此处查看服务器规格:http://aopmfg.com/php.php

有什么想法吗?

编辑 - 我还要补充一点,这是几周前,我最后一次测试时都运行良好。从那以后,没有重大的代码更改。

编辑2 - 阅读类似的帖子后,我尝试添加From和Reply-To标题...仍然没有运气。新代码:

<?
$headers = 'From: <some@email.com>' . "\r\n" .
'Reply-To: <some@email.com>';

mail('<myEmail@gmail.com>', 'the subject', 'the message', $headers,
'-fwebmaster@example.com');
?>

6 个答案:

答案 0 :(得分:8)

事实证明,谷歌阻止了我的服务器,因为同一台服务器上的另一个网站被黑客攻击并用于垃圾邮件。

为了测试并确保服务器出现问题,我创建了一个简单的PHP文件,可以在页面刷新时向我的电子邮件地址发送电子邮件。它在我发送到基于交换的电子邮件地址时起作用,但不适用于任何与Google相关的帐户。

代码:     

$headers = 'From: <test@test.com>' . "\r\n" .
'Reply-To: <test@test.com>';

mail('<myEmail@gmail.com>', 'the subject', 'the message', $headers,
  '-fwebmaster@example.com');
?>

感谢所有人的帮助。

答案 1 :(得分:1)

尝试将&lt;&gt;放入围绕From和回复地址。我在工作电子邮件中遇到了同样的问题。

答案 2 :(得分:1)

我遇到了与gmail类似的问题。但我的标题是“看看你是否赢了”。当我把它变成一个不那么营销/垃圾邮件的东西时,它就出现了。所以它并不总是导致这个问题的PHP代码,但它也可能是被列入黑名单的主题标题。

答案 3 :(得分:0)

我遇到了同样的问题。但是当我检查了我的C:\ xampp \ mailoutput文件夹时,发送的邮件已在此文件夹中收到。现在请检查并做必要的事情。它是在我的测试本地服务器中发送的。如果它是在真实服务器上发送的,那可能在您的托管服务器上,您必须通过站点主机检查

答案 4 :(得分:0)

我发现将SPF和DKIM记录添加到DNS中可以解决此问题。我可以使用phpmail()函数发送到Gmail订阅者列表。

  1. 在php.ini sendmail参数的-f选项或mail()额外参数字段中使用的电子邮件中的域,必须具有该域的有效SPF记录。
  2. 您还应该使用域密钥或DKIM。这里的技巧是域密钥/ DKIM区分大小写!

更新记录后,邮件将传递到Gmail,Yahoo和AOL地址。

在此处阅读源代码。 ABOMB发表的评论

https://www.php.net/manual/en/function.mail.php#107321

答案 5 :(得分:0)

我遇到了同样的问题。我使用 BCC 电子邮件地址来记录发送的消息。这是一个优势,好像 gmail 或 hotmail 阻止了邮件,然后密件抄送也被阻止了。 我创建了一个 SPF 记录,但它本身并没有帮助,尽管这可能是一个好主意。 似乎对我有帮助的是将电子邮件地址放在 <> 中并在标题中添加对条目的回复。

$headers = 'From: <test@test.com>' . "\r\n" .
'BCC: <fred@test.com>' . "\r\n" .
'Reply-To: <test@test.com>';

mail('<myEmail@gmail.com>', 'the subject', 'the message', $headers);