【发布时间】:2011-02-14 20:08:26
【问题描述】:
你好 我正在尝试使用 PHPMailer 通过 SMTP 发送电子邮件。因此,在我的开发服务器(我的计算机上的 WAMP)上,它工作正常。我使用的邮件服务器是 mail.jackbusch.net,它位于我要将网站上传到生产环境的同一共享主机上。
但是当我上传网站时,PHP 邮件程序停止工作并返回 SMTP:错误:无法验证(当我尝试使用 localhost 作为服务器时)和 SMTP 错误:无法连接(当我输入完整的 smtp服务器名称——即 mail.jackbusch.net)。
这对我来说似乎很奇怪,因为我有几个 Wordpress 安装可以很好地发送电子邮件通知——而且 WP 使用 Phpmailer,对吗?
我什至不知道从哪里开始解决这个问题?
编辑:感谢您的建议——我最终只使用了 PEAR Mail 包,它工作得很好。
我使用了此处显示的第二个示例: http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm
我认为一个关键的区别是,在我使用端口 26 之前,我第二次使用 SSL 端口作为我的网络主机(一个小橙色)。不管出于什么原因,这一次都解决了。
【问题讨论】:
-
您是否在 phpmailer 中将身份验证设置为“开启”? $mail->SMTPDebug = 2; // 启用 SMTP 调试信息(用于测试) $mail->SMTPAuth = true; // 启用 SMTP 身份验证
-
一些 ISP 阻止端口 25 (SMTP) 流量到“外国” SMTP 服务器作为反垃圾邮件措施。尝试通过 telnet 或其他一些终端仿真器应用程序直接连接到该邮件服务器的端口 25。如果它们也无法连接,则不是您的代码有问题,而是其他原因,例如防火墙。您可以尝试一些备用端口,例如 587。但如果您的 ISP 阻止端口 25 流量,他们可能也阻止了标准备用端口。
-
这可能是 SSL/TLS 问题,而不是连接问题。你能显示你正在使用的 PHPMailer 代码吗?
-
@pekka 我认为你是对的——这是一个 SSL/TLS 问题。虽然我仍然感到困惑,为什么它可以在我的本地主机上使用相同的 phpmailer 代码和相同的邮件服务器工作,但在上传时却不能工作。