在建立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();
?>这是防晒系数:
v=spf1 a mx include:secureserver.net ~all所有这些配置正确吗?
发布于 2017-01-06 22:36:48
也有同样的问题。我检查了整个剧本30次。每个设置。并且,检查和重新检查dns记录dkim和spf 100次。
什么都没用。
我发电子邮件给hotmail/outlook/直播这个问题。我没想到会有什么帮助,但几个小时内问题就解决了。
剧本里没有。Hotmail只会阻止任何通过大多数网页发送的电子邮件。即使你的垃圾邮件声誉很好。他们把服务器的ip放在白名单上,问题就解决了。
如果他们发现了不好的行为,他们可以把它改回来。发电子邮件是有限度的。如果您的服务器信誉不好,他们不太可能将服务器添加到他们的白名单中。这可能是共享主机包的一个问题。在您所在网站的同一服务器上的其他人可以增强服务器声誉。
发布于 2015-05-14 12:58:02
使用SMTP Auth,Hotmail就不会再抱怨了。几乎所有接收服务器都认为匿名邮件是垃圾邮件。
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port = 26; // set the SMTP port
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password但是ofc。根据您是否控制SMTP,您应该确保反向dns查找之类的基本内容是正确设置的。
由于评论中的讨论,我想添加一些关于SMTP Auth为什么要修复这个问题的更多信息:
如果您使用的是PHPMailer而没有SMTP-Server的定义,PHPMailer将在mail模式下操作,这只会调用php的mail()函数。
邮件函数本身将使用在PHP文件中配置的smtp设置或默认值,如下所示:http://php.net/manual/en/mail.configuration.php。
缺省值:
SMTP = "localhost"
smtp_port = "25" 由于OP已经配置了本地邮件服务器(或者他为什么要设置MX记录?),php现在将连接到这个没有身份验证的SMTP-Server。服务器将接受该消息并将其发送到下一台服务器。
(如果使用unix‘sendmail,同样适用)
链中的每个服务器,特别是接收服务器现在都可以看到,已经使用了私有SMTP,并且没有提供身份验证。这已经是垃圾邮件-超过9000,因为有了这样的设置(理论上),每个人都可以使用该服务器发送邮件!仅限于本地主机的限制是ofc。其他服务器不知道,因此SMTP被认为是打开邮件中继 relay
将PHPMailer切换到SMTP -8月(即使仍然使用本地SMTP服务器)将在转发邮件时将此信息添加到服务器创建的条目中。条目如下所示:
Received: from SERVER1 ([xxx.xxx.xxx.xx]) by mydomain.de with ESMTPA 后面的A现在告诉接收服务器,Server1已经在mydomain.de上使用了一个有效的用户帐户来启动发送尝试,这意味着SMTP-服务器知道邮件的来源,并且可以提供有关发件人的信息。
尽管如此,本地SMTP-Server并不是一个已知的服务器,因此在这种情况下,它可能最终会出现灰色列表,并对各种RBL进行检查,在这种情况下,这不应该是任何问题。
如果(本地) SMTP-Server现在通过了所有检查(反向-DNS查找、Greylisting、RBL等等)--即使没有使用远程smtp,邮件也有很好的机会被成功传递,因为服务器和发送方都可以使用该服务器进行身份验证。(否则没有一家公司能够安装自己的服务器)
因此,即使没有使用远程服务器,使用SMTP-Auth (或任何其他身份验证方法)也会产生影响。
认证邮件并不能保证不被认为是垃圾邮件--但是未经认证的邮件在普通系统的垃圾邮件评分中排名肯定更高。
发布于 2015-05-26 09:05:44
你在现场服务器上测试过了吗?如果是,你犯了什么错误?您是否启用了phpmailer的调试以了解它有哪些错误?如果不使用SMTP,则可以使用
$mail->do_debug = true;
如果您正在使用SMTP,则使用
$mail->SMTPDebug = true;
你从调试器得到了什么输出?你知道你的问题是从哪里来的。
我也认为@dognose是通过要求您更好地使用SMTP来回答的。这样,您的电子邮件通过身份验证,这将有助于表明您的身份得到确认。
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port = 26; // set the SMTP port
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password如果$mail->Port = 26;不能工作,您可以尝试$mail->Port = 25;。
https://stackoverflow.com/questions/30237635
复制相似问题