带有 Gmail SMTP 的 SwiftMailer 突然停止工作:无法与主机建立连接 smtp.gmail.com [#0]
SwiftMailer with Gmail SMTP suddenly stopped working: Connection could not be established with host smtp.gmail.com [ #0]
我有几个网站将 SwiftMailer 与 Gmail 结合使用。我没有触及这些网站的任何代码,突然间它们都不再工作,导致致命错误:无法与主机建立连接 smtp.gmail.com [#0]
我在互联网上搜索了可能导致此问题的原因,尝试了多种解决方案,但均无济于事。有谁知道 Gmail 端是否发生了某些变化(他们不再允许我连接?)或者可能发生了什么?
我试过的一些东西:
- 在服务器路由器上打开端口(SSL 为 465)- 没有帮助
- 在服务器上禁用防火墙 - 没有帮助
- 尝试使用 smtp.gmail.com 的 IP 地址代替域名,使用 ping 找出 IP - 没有帮助
- 更改 SwiftMailer 程序中的设置(将某些验证选项设置为 false)- 没有帮助
我知道这不是一个非常具体的编码问题,但我没有对我的代码进行任何更改,因此问题实际上不可能出现在我的代码中。我只是希望有人知道 2-3 天前发生了什么变化,以及我需要做什么才能让 SwiftMailer 再次工作。
注意:Gmail 帐户的密码或帐户安全设置(例如两步验证和排序)也没有更改。此外,使用不同的 SMTP,例如来自 GMX.net 的 SMTP,该脚本仍然可以正常工作!
奇怪嗯?
我强烈建议您查看日志插件。
https://swiftmailer.symfony.com/docs/plugins.html#logger-plugin
它可能已经安装,所以您需要做的就是按照此处的说明进行操作,如果您 运行 记录器,它会告诉您电子邮件失败的原因。
我今天遇到了同样的问题。我成功尝试了此网站中提到的解决方法。
Gmail 配置中的某些内容已更改。我会尝试更好的解决方案,但同时会使用此解决方法。
希望对您有所帮助。
https://github.com/swiftmailer/swiftmailer/issues/544
You could disable the SSL check by modifying the function
"_establishSocketConnection" in StreamBuffer.php. Add these lines
before stream_socket_client command:
$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
虽然 Toni 的解决方案有效,但它需要摆弄供应商来源,这并不理想。您还可以在代码中以编程方式设置流选项,您可以在其中使用 swiftmailer $mailer
实例,例如
$transport = $mailer->getTransport();
if($transport instanceof \Swift_Transport_EsmtpTransport){
$transport->setStreamOptions([
'ssl' => ['allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false]
]);
}
我有几个网站将 SwiftMailer 与 Gmail 结合使用。我没有触及这些网站的任何代码,突然间它们都不再工作,导致致命错误:无法与主机建立连接 smtp.gmail.com [#0]
我在互联网上搜索了可能导致此问题的原因,尝试了多种解决方案,但均无济于事。有谁知道 Gmail 端是否发生了某些变化(他们不再允许我连接?)或者可能发生了什么?
我试过的一些东西:
- 在服务器路由器上打开端口(SSL 为 465)- 没有帮助
- 在服务器上禁用防火墙 - 没有帮助
- 尝试使用 smtp.gmail.com 的 IP 地址代替域名,使用 ping 找出 IP - 没有帮助
- 更改 SwiftMailer 程序中的设置(将某些验证选项设置为 false)- 没有帮助
我知道这不是一个非常具体的编码问题,但我没有对我的代码进行任何更改,因此问题实际上不可能出现在我的代码中。我只是希望有人知道 2-3 天前发生了什么变化,以及我需要做什么才能让 SwiftMailer 再次工作。
注意:Gmail 帐户的密码或帐户安全设置(例如两步验证和排序)也没有更改。此外,使用不同的 SMTP,例如来自 GMX.net 的 SMTP,该脚本仍然可以正常工作!
奇怪嗯?
我强烈建议您查看日志插件。 https://swiftmailer.symfony.com/docs/plugins.html#logger-plugin
它可能已经安装,所以您需要做的就是按照此处的说明进行操作,如果您 运行 记录器,它会告诉您电子邮件失败的原因。
我今天遇到了同样的问题。我成功尝试了此网站中提到的解决方法。
Gmail 配置中的某些内容已更改。我会尝试更好的解决方案,但同时会使用此解决方法。
希望对您有所帮助。
https://github.com/swiftmailer/swiftmailer/issues/544
You could disable the SSL check by modifying the function "_establishSocketConnection" in StreamBuffer.php. Add these lines before stream_socket_client command:
$options['ssl']['verify_peer'] = FALSE; $options['ssl']['verify_peer_name'] = FALSE;
虽然 Toni 的解决方案有效,但它需要摆弄供应商来源,这并不理想。您还可以在代码中以编程方式设置流选项,您可以在其中使用 swiftmailer $mailer
实例,例如
$transport = $mailer->getTransport();
if($transport instanceof \Swift_Transport_EsmtpTransport){
$transport->setStreamOptions([
'ssl' => ['allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false]
]);
}