【发布时间】:2014-03-17 12:02:41
【问题描述】:
前几天,我在使用 GoDaddy 托管网站时遇到了一些问题。我打电话给他们的技术支持,与我交谈的人建议我的问题与我在 Windows 机器上的事实有关,并且在 Linux 机器上会更好。对此没有意见,我同意了,他们把我换了。
在这种转变之后,我的 PHPMailer 功能已经抛弃了我。我已经工作了几个月,所以我知道我的设置是准确的。我已向 GoDaddy 确认,从他们的角度来看,我尝试发送的帐户没有改变。用户端没有进行任何更改(如新密码)。最重要的是,唯一不同的是我的网站现在托管在 Linux 服务器上。就是这样。
所以我认为我的 PHPMailer 困难一定与此有关,因为一个运行了几个月的脚本在服务器转换发生的确切时刻失败了,这太巧合了。但为什么?我花了一个小时与他们的技术支持联系,他们认为服务器设置没有任何问题。我们验证了我的设置(只是为了好玩)。一切看起来都很好,但是当我发送电子邮件时,我收到了这个错误:
SMTP -> ERROR: Failed to connect to server: Connection refused (111)SMTP Connect() failed.
关于此类错误的帖子很多,几乎所有帖子都与第一次设置错误输入设置或遗漏设置的人有关。但是,我知道我的设置是完整且准确的,因为我已经成功使用了几个月。为了完整起见,我将它们发布在这里:
$mail = new PHPMailer();
$mail->IsSMTP(); //telling the class to use SMTP
$mail->isHTML(true);
$mail->Host = "smtpout.secureserver.net"; //also tried "relay-hosting.secureserver.net"
$mail->WordWrap = 50;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Username = "example@email.com";
$mail->Password = *******;
$mail->Subject = "Test Email";
$mail->SMTPDebug = 1;
有没有人知道为什么会发生这种情况?是否有一些技术支持人员可能不知道的服务器设置,比如在我的 php.ini 文件中?和我一起工作的那个人尽力帮助我,但他可能只是没有意识到一些事情。
感谢任何帮助。让我知道我是否可以提供任何其他信息。谢谢!
编辑:我还应该提到我所做的其他一些尝试。无论如何,我都会得到相同的结果。
1) 带有端口 587 的 TLS 2) 不使用 SSL,使用端口 25、80 和 3535。 2)我自己的gmail地址修改服务器、用户名、密码等
【问题讨论】:
-
我首先尝试确定它是否与 SSL 相关。它是否可以在非安全端口(如 25、80、3535)上不使用 SSL?如果是这样,那么它无法在端口 465 上使用 SSL 的原因可能是证书问题或正在使用的 SSL 密码问题。如果即使没有 SSL 也无法工作,那么可能是 phpmailer 的设置方式有问题,或者防火墙不允许出站连接。在这种情况下,我会尝试使用完全不同的 SMTP 服务器(例如 smtp.gmail.com)来确定问题是否特定于 smtpout.secureserver.net
-
谢谢@mti2935。我应该提到我的其他一些尝试。 OP 修改以显示它们。我将如何修改 phpmailer 设置?我没有看到任何设置自定义 - 只有
class.phpmailer.php和languages/phpmailer.lang-en.php文件。我还添加了ini_set("include_path", ".:/path/to/phpmailer/dir");至于防火墙,我没有改变任何东西,在 GoDaddy 得到它之前它工作得很好。 -
某些东西可能会阻止这些传出连接尝试。您可以访问此服务器上的命令行吗?如果是这样,您可以尝试使用 telnet 连接到端口 25、80 或 3535 上的 smtpout.secureserver.net;还是到 465 端口上的 smtp.gmail.com?这些尝试是否成功连接?