提问者:小点点

如何解决“无法与主机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

从谷歌上的一些参考(通过Laravel使用gmail smtp:无法与主机建立连接smtp.gmail.com[连接超时#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和数字海洋

以前在暂存服务器上发送邮件可以正常工作,但是在锻造laravel上重新安装存储库后,它现在不起作用

我需要设置什么?


共3个答案

匿名用户

几天前,我遇到了同样的问题,我到处寻找,比如laracast stackoverflow和许多github问题,最终解决了这个问题。

你需要配置这样的东西,

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

完成此设置后,您应该确保您的google帐户< code >两步验证已关闭,因为这增加了一层额外的安全性,这也是无法建立连接的原因。

我认为这是谷歌最近添加的新功能。我以前有过工作邮件配置,但最近相同的代码不起作用。

你可以转到你的谷歌帐户,在那里你会看到“登录和安全”选项卡。点击它,然后你会看到两步验证。那么你需要关掉它。那我想它会起作用的。

这东西对我有用,我希望它对你也有用。我希望你能理解。

匿名用户

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls

您需要在env文件中用MAIL_MAILER关键字替换MAIL_DRIVER。

匿名用户

这是因为暂存服务器中的发送邮件配置。有两种解决方案可用。1)一种是,例如,使用您的域名创建一个电子邮件地址,example@domainname.com 然后使用提供商提供的设置更改电子邮件配置。2)对于另一种解决方案,需要知道您的Laravel版本。