【发布时间】:2015-01-13 16:03:10
【问题描述】:
每当 $mail->isSMTP();在 phpmailer 中设置它“挂起”大约 1 分钟,然后重定向到: 500 服务不可用页面,XID:2060448470。
但一分钟后,我收到了发送的邮件。在邮件中我可以阅读: Received-SPF: pass (google.com: domain of admin@skivbasar.se 将 2a00:16d8:0:4::200 指定为允许的发件人)
当我删除“$mail->isSMTP();”电子邮件立即发送但他们没有得到 SPI = 通过: spf=none(google.com: 117658@atapa01.citynetwork.se 未指定允许的发件人主机)。
我真的需要 SMTP 才能工作,因为我过去有很多丢失的邮件。我花了几天时间寻找一个解决方案,包括 20 多篇关于 stackoverflow 的文章。
我已经多次从 worxware 和 github 重新尝试了示例代码。它总是“$mail->isSMTP();”拒绝正常工作。
这是我的邮件代码:
require("PHPMailerAutoload.php");
require("class.phpmailer.php");
require("class.smtp.php");
$mail = new PHPMailer();
$mail->Host = "mail.skivbasar.se";
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->IsSMTP();
$mail->Username = "-----.se"; // SMTP username
$mail->Password = "-------"; // SMTP password
$mail->AddReplyTo($replyto);
$mail->From = "admin@skivbasar.se";
$mail->FromName = "skivbasar.se";
$mail->AddAddress($row['email']);
$mail->Subject = $row['subject'];
$mail->Body = $row['message'];
$mail->WordWrap = 150;
if(!$mail->Send()) {
$error = true;
} else {
$error = false;
}
您可以访问测试页以查看错误的实际操作:http://skivbasar.se/action/mail/t3.php
更新:
非常感谢您回复同步!你似乎是个真正的 phpmailer 专家!
我已经无数次尝试了 tls 和 ssl,甚至评论了这一行并使用了端口 587 和 465。只要“isSMTP”是,两者实际上都可以发送邮件。
我要解决的真正问题是为什么脚本在设置“isSMTP”时会挂起 1 分钟,但在重定向到 500 页面后仍会发送邮件。
没有 isSMTP 的 softfail 是通过以下方式发送的: 来自 smtp02.mailout.citynetwork.se (mailout.citynetwork.se. [91.123.193.90])
通过(但被绞死)的由以下人员发送: 来自 smtp03.citynetwork.se (mail.citynetwork.se. [91.123.193.200])。
感觉就像脚本正在等待来自邮件服务器的回复 60 秒(如 HELO)并且当服务器没有响应时。无论如何,它会在 60 分钟后发送邮件。我在某处读到过这个。我还在代码中找到了一些引用“HELO”的条目,例如第 1340 行的 class.phpmailer.php “// 我们必须在 tls 协商后重新发送 HELO”。
由于它重定向到 500 页,我无法打印任何错误消息。我也无权访问我的日志。但它适用于本地主机上的“isSMTP”,只有当脚本在线运行时才会这样挂起。
【问题讨论】:
-
如果您不调用
isSMTP,PHPMailer 不会通过SMTP 发送,而是调用mail()来提交到您的本地服务器。 SMTP 并不是一种交互式协议,它通常会导致延迟。 500 响应可能不是重定向,所以我建议您在服务器上启用错误输出:ini_set('display_errors', true)。我猜你的 DNS 或防火墙有问题,其中任何一个都可以解释 60 秒的延迟 - SMTP 中的大多数超时都比这长得多。请参阅the troubleshooting docs 了解更多信息。 -
PS 我对 PHPMailer 了解很多,因为我是维护者。