php邮件功能无法将html电子邮件发送到hotmail和aol地址


php mail function failed to send html email to hotmail and aol address

我创建了一个html时事通讯,我想使用php-mail()函数将时事通讯发送到用户数据库中的客户电子邮件地址。在此之前,我测试了一些地址,包括gmail、hotmail、AOL和yahoo。gmail和yahoo立即收到html格式的电子邮件,一切都很好(风格和图像按设计显示),但hotmail和AOL没有收到任何东西。我测试了使用mail()向hotmail和AOL发送一封简单的文本电子邮件,在等待了很长时间(一晚)后,他们能够接收到文本格式的电子邮件。所以我不知道hotmail和AOL出了什么问题。有人有同样的问题,知道如何解决吗?

这是我的标题设置

    $subject = 'News Letter';
    $headers = "From: sales@example.com'r'n";
    $headers .= "Reply-To: sales@example.com'r'n";
    $headers .= "Return-Path:sales@example.com'r'n";
    $headers .= "MIME-Version: 1.0'r'n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1'r'n";

mail($email, $subject, $message, $headers); 

确保$message有正确的html,也有标签。你可以尝试发送一封真实的电子邮件,一些较大的公司会屏蔽垃圾邮件。如果你的消息只是"测试"或"测试",那么你可能永远不会收到它。如果你从共享托管服务器或IP发送,你也可能会遇到被阻止的问题。

一个确定的解决方案是设置一个实际的电子邮件帐户,并使用SMTP通过该帐户发送邮件。

以下是使用PHPMailer()的SMTP的答案。

从SMTP服务器使用PHP发送电子邮件

检查是否为From:标头中使用的域设置了SPF记录。作为垃圾邮件保护,这些服务可能会检查您的服务器是否被允许发送该域的电子邮件(设置SPF记录解决了我在谷歌上将服务器发送的邮件标记为垃圾邮件的问题,AOL或Hotmail可能会受到更大的限制。)

有关SPF记录的更多信息,请点击此处:https://en.wikipedia.org/wiki/Sender_Policy_Framework

还可以查看DKIM:https://en.wikipedia.org/wiki/DKIM这也可能有助于保证电子邮件递送。