带有Gmail SMTP的SwiftMailer突然停止工作:无法与主机smtp.gmail.com [#0]建立连接

时间:2017-10-29 19:17:13

标签: swiftmailer

我有几个网站使用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,脚本仍然可以正常工作!

奇怪的嗯?

3 个答案:

答案 0 :(得分:3)

我今天遇到了同样的问题。我成功地尝试了本网站中提到的解决方法。

Gmail配置中的某些内容已更改。我将尝试更好的解决方案,但同时将使用此解决方法。

希望有所帮助。

https://github.com/swiftmailer/swiftmailer/issues/544

  

您可以通过修改功能来禁用SSL检查   StreamBuffer.php中的“_establishSocketConnection”。添加这些行   在stream_socket_client命令之前:

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;

答案 1 :(得分:1)

我强烈建议您查看日志插件。 https://swiftmailer.symfony.com/docs/plugins.html#logger-plugin

可能已经安装了,所以您只需按照此处的说明操作,如果您运行记录器,它将为您提供电子邮件失败的原因。

答案 2 :(得分:0)

虽然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]
    ]);
}