每当$ mail-> isSMTP();在phpmailer中设置它“挂起”约1分钟,然后重定向到: 带有XID的500 Service Unavailable页面:2060448470。
但是一分钟后我收到了发送的邮件。在邮件中我可以阅读: 收到-SPF:通过(google.com:域名为admin@skivbasar.se指定2a00:16d8:0:4 :: 200作为允许的发件人)
当我删除“$ mail-> isSMTP();”电子邮件立即发送,但他们没有得到SPI =通过: spf = none(google.com:117658@atapa01.citynetwork.se未指定允许的发件人主机)。
我真的需要SMTP工作,因为我过去收到了很多丢失的邮件。我花了几天时间在stackoverflow上寻找一个包含20多篇文章的解决方案。
我已经从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
UPPDATE:
非常感谢您回复Synchro!你似乎是一个真正的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分钟后发送邮件。我在某个地方读过这个。我还在代码中找到了一些条目,它在第1340行的class.phpmailer.php中引用了“HELO”,“我们必须在谈判后重新发送HELO”。
由于它重定向到500页我无法打印任何错误消息。我也没有访问我的日志。但它适用于localhost上的“isSMTP”,只有当脚本在线运行时才会挂起。
答案 0 :(得分:0)
这里可能会出现问题。
你实际上有重复的要求 - 你只需要加载PHPMailerAutoload.php
- 摆脱其他两个。
你正在使用'ssl'但是在端口587上。这可能不起作用 - 对于端口587,设置$mail->SMTPSecure = 'tls';
。
您的邮件服务正在使用TLS - 请参阅尝试连接时发生的情况:
telnet mail.skivbasar.se 587
Trying 91.123.193.200...
Connected to mail.skivbasar.se.
Escape character is '^]'.
220 smtp05.citynetwork.se ESMTP Postfix
EHLO localhost
250-smtp05.citynetwork.se
250-PIPELINING
250-SIZE 31457280
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
请注意该扩展列表中的STARTTLS
。
如果您打算使用PHPMailer,最好从其中一个捆绑示例开始,尤其是gmail版本,因为它可以帮助您避免像这样的愚蠢错误。
答案 1 :(得分:0)
我遇到了同样的问题,在我的$ mail-> send()上获得了500个响应,但在按照Synchros的建议查找phpMailers的gmail示例后,我使用了
$mail->Host = gethostbyname('mail.citynetwork.se');
而不是
$mail->Host = 'mail.citynetwork.se'
;
这解决了我的问题。