繁体   English   中英

如何解决“无法与主机 smtp.gmail.com 建立连接”?

[英]How can I solve “Connection could not be established with host 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

它也不起作用

on这里做: https : //myaccount.google.com/lesssecureapps

是一样的

我尝试:

php artisan cache:clear
php artisan config:cache

它仍然不起作用

我的服务器使用 gitlab、forge laravel 和数字海洋

以前在登台服务器上发送邮件有效,但在我在伪造 laravel 上重新安装存储库后,它现在不起作用

我需要设置什么?

几天前,我遇到了完全相同的问题,并且到处搜索,例如 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 帐户2 step verification已关闭,因为这会增加额外的安全层,这就是无法建立连接的原因。

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

您可以转到您的 google 帐户,在那里您将看到登录和安全选项卡。 单击它,然后您将在那里看到2 步验证 然后你需要关闭它。 然后我认为它会起作用。

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

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

由于您没有提到您的服务器设置,我认为这可能与 SELinux 布尔值有关。

如果您的 SELinux 处于强制模式,您需要打开httpd_can_sendmailhttpd_can_network_connect布尔值。

您可以通过运行以下命令来验证 SELinux 状态是否正在执行:

$ sestatus
...
Current mode: enforcing
...

检查 httpd sendmail 和网络连接布尔值的状态:

$ getsebool httpd_can_sendmail httpd_can_network_connect
httpd_can_sendmail --> off
httpd_can_network_connect --> off

要启用 sendmail 和网络连接并使更改在重新启动后保持不变:

$ sudo setsebool -P httpd_can_sendmail 1
$ sudo setsebool -P httpd_can_network_connect 1
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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM