PHP无法向电子邮件地址中包含两个点(“.”)字符的收件人发送电子邮件

3

我一直在努力使用PHP的邮件功能发送电子邮件。我想要发送2封不同的电子邮件到2个不同的邮箱地址。

$allowHtmlHeader = "MIME-Version: 1.0\r\n";
$allowHtmlHeader .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$headers = "From: webmaster@xyz.com\r\nReply-To: webmaster@xyz.com\r\n" . $allowHtmlHeader;
$customerHeaders = "From: a.b.c@gmail.com\r\nReply-To: a.b.c@gmail.com\r\n" . $allowHtmlHeader;
$subject = "Enquiry";
$message = "Try me...";
$cMessage = "I score better!";

if ($_POST[cEmail] != null)
{
    if (mail("a.b@gmail.com", $subject, $cMessage, $cHeaders)) {
        echo("Message successfully sent!");
    }
    else {
        echo("Message delivery failed...");
    }

    if (mail("a.b.c@gmail.com", $subject, $message, $headers)) {
        echo("Message successfully sent!");
    }
    else {
        echo("Message delivery failed...");
    }   
}

使用上面的代码,我可以成功地向a.b@gmail.com发送电子邮件。但在所有尝试中,没有一封邮件到达a.b.c@gmail.com,尽管它总是成功地到达a.b@gmail.com。我甚至尝试用a.b.c@gmail.com替换a.b@gmail.com,但仍然无法将任何邮件发送到那个电子邮件地址。

也许邮件功能不支持在名称中有超过1个点'.'的电子邮件?

任何帮助都将不胜感激!


1
如果你的代码可以处理 a.b@,但是当你将它改成 a.b.c@ 后就无法工作,那么这不是你的代码的问题。你是否收到了“发送成功”的消息?如果是这样,那么在邮件服务器的某个地方会发生一些阻止电子邮件传递的事情 - 我建议你首先查看邮件服务器上的日志,看看是否有任何奇怪的东西。我第一个猜测是它被某个垃圾邮件过滤器拦截了。 - andrewsi
是的,我总是收到“消息成功发送!”的提示。此外,我一直在尝试找到我的Gmail帐户中的垃圾邮件过滤器,但无论如何都找不到它。另外,我想知道Gmail如何识别某个发件人为一个帐户的垃圾邮件,而对其他帐户则不关心? - zapper
2
这是一个特定的Gmail地址问题吗? Gmail显然忽略点。a.b.c@gmail.com == a.bc@gmail.com == abc@gmail.com。有关信息,请参见:http://www.slate.com/blogs/future_tense/2013/08/01/dots_in_gmail_addresses_what_happens_if_you_leave_out_the_period.html - Pagerange
太棒了!我去掉了那些点,瞧!非常感谢! :) - zapper
1个回答

1

解决方案:

遵循Pagerange的建议,我尝试从“收件人”电子邮件地址中删除点号(“.”),结果电子邮件成功发送!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接