【发布时间】:2015-05-14 12:39:34
【问题描述】:
设置 SPF 记录后,我仍然在这里验证为什么我无法收到此电子邮件到 hotmail 帐户。我可以毫无问题地将其发送到 gmail。请确认代码是否正确,SPF记录是否正确:
<?php
require_once 'PHPmailer/class.phpmailer.php';
$mail = new PHPMailer();
$body = "Thankyou for your Purchase. <br/><br/> Here is your Policy! You are now Protected during your Travels.";
$mail->AddAddress('$payer_email');
$mail->From = "noreply@example.com";
$mail->FromName = "Name";
$mail->Subject = "Thankyou for Your Purchase";
$mail->MsgHTML($body);
$mail->AddAttachment("tosend/xxx.pdf");
if(!$mail->Send()) {
echo "There was an error sending the message";
$sql = "UPDATE purchases SET policy_sent = 'Not Sent' WHERE id = '$lastid' ";
$stmt = $mysqli->query($sql);
$mysqli->close();
exit;
}
echo "Message was sent successfully";
$sql = "UPDATE purchases SET policy_sent = 'Sent', email_to = '$payer_email' WHERE id = '$lastid'";
$stmt = $mysqli->query($sql);
$mysqli->close();
?>
这是 SPF:
v=spf1 a mx include:secureserver.net ~all
所有这些都正确配置了吗?
【问题讨论】:
-
我们需要了解更多才能确定。对于初学者来说,immortalinsurance.com 应该有 SPF records 告诉人们您的网络服务器是接收邮件的好地方。
-
为什么 Gmail 会接收电子邮件? SPF 记录能解决您认为的大部分问题吗?除非自动设置,否则我没有设置。
-
不同的服务做不同的事情。如果 GMail 允许邮件通过,我会假设您没有有 SPF 记录 - 如果您有 SPF 记录但您的服务器未在其中列出,那么 GMail 将删除邮件。请记住,Hotmail、Google 等基本上会收集一堆垃圾邮件的证据,然后以不同的方式对其进行评分,因此不能保证任何一次更改都会让任何一个提供商的电子邮件通过,并且通常无法弄清楚为什么某些东西对他们来说似乎是“垃圾邮件”。
-
顺便说一句,你可能会发现this existing ServerFault question很有趣;这是一个很常见的问题,而且似乎在那里得到了很好的解决。
-
您的代码通过您的本地邮件服务器发送 - 如果您直接使用 SMTP 发送并启用调试输出 (
$mail->SMTPDebug = 2;),它将为您提供更多信息。或者,只需查看您本地邮件服务器的日志文件,它就会告诉您为什么 hotmail 拒绝(或无论它在做什么)您的邮件。