php-如何解决“无法通过主机smtp.gmail.com建立连接”?

如果我确实在本地主机上发送电子邮件,则可以正常工作.没错

但是我尝试在登台服务器上,它显示如下错误:

Swift_TransportException in StreamBuffer.php line 268:
Connection could not be established with host smtp.gmail.com [Connection timed out #110]

in StreamBuffer.php line 268
at Swift_Transport_StreamBuffer->_establishSocketConnection() in StreamBuffer.php line 62
at Swift_Transport_StreamBuffer->initialize(array('protocol' => 'tcp', 'host' => 'smtp.gmail.com', 'port' => '587', 'timeout' => '30', 'blocking' => '1', 'tls' => true, 'type' => '1', 'stream_context_options' => array())) in AbstractSmtpTransport.php line 113
at Swift_Transport_AbstractSmtpTransport->start() in Mailer.php line 79
at Swift_Mailer->send(object(Swift_Message), array()) in Mailer.php line 395
at Mailer->sendSwiftMessage(object(Swift_Message)) in Mailer.php line 217
...

我的环境是这样的:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=secret@gmail.com
MAIL_PASSWORD=secret
MAIL_ENCRYPTION=tls

从谷歌(Using gmail smtp via Laravel: Connection could not be established with host smtp.gmail.com [Connection timed out #110])的一些参考,我尝试一些答案.我尝试将邮件端口和邮件加密更改如下:

MAIL_PORT=465
MAIL_ENCRYPTION=ssl

这是行不通的

我再次尝试更改此内容:

MAIL_DRIVER=sendmail

它也不起作用

我在这里:https://myaccount.google.com/lesssecureapps

一样的

我尝试:

php artisan cache:clear
php artisan config:cache

它仍然不起作用

我的服务器使用gitlab,forge laravel和digital ocean

以前在登台服务器上发送邮件有效,但是在我将库重新安装在伪造laravel上后,现在无法正常工作

我需要设定什么?

解决方法:

几天前,我遇到了完全相同的问题,我在各处搜索了类似laracast *和许多github问题,并最终解决了这个问题.

您需要这样的配置,

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=ssl

完成此设置后,您应该确保关闭了Google帐户的两步验证,因为这增加了一层额外的安全保护,这就是无法建立连接的原因.

我认为这是Google最近添加的新功能.我之前已经在进行邮件配置,但是最近相同的代码不起作用.

您可以转到自己的Google帐户,在其中看到“登录和安全”标签.单击它,然后您将看到两步验证.然后,您需要关闭该功能.然后我认为它将起作用.

这件事对我有用,我希望它也对您有用.
我希望你明白.

上一篇:为什么php的mail()函数成功发送邮件但是有空白字段?


下一篇:python – 在HTML消息上显示附加图像