无法在 laravel 5.6 电子邮件发送中与主机 smtp.gmail.com [连接被拒绝 #111] 建立连接

Posted

技术标签:

【中文标题】无法在 laravel 5.6 电子邮件发送中与主机 smtp.gmail.com [连接被拒绝 #111] 建立连接【英文标题】:Connection could not be established with host smtp.gmail.com [Connection refused #111] in laravel 5.6 email send 【发布时间】:2019-02-05 03:33:52 【问题描述】:

从 cpnel 发送电子邮件失败,但在我的 localhost 中可以正常工作。

这是我在 .env 文件中的电子邮件配置。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl

它在 localhost 中工作正常,但在 cpanel 中不工作。在cpanel中显示

Connection could not be established with host smtp.gmail.com [Connection refused #111]

我该如何解决?

【问题讨论】:

您可以使用 gmail 电子邮件在 localhost 上发送电子邮件吗? 显而易见的答案是 CPanel 或您的主机提供商阻止了 Gmail 或 SMTP。你能检查一下是不是这样吗? @Shujaat.. 是的,我可以使用 gmail 电子邮件从本地主机发送电子邮件。 @Loek 如何检查我的 SMTP 是否在 cpanel 中被阻止。 我已经解决了。刚刚将 mail_driver smtp 更改为 sendmail 并将 prot 465 更改为 587 【参考方案1】:

问题已解决。 我在 MAIL_DRIVERMAIL_PORT 进行了两处更改。

MAIL_DRIVER=sendmail
MAIL_PORT=587

所以,我的完整代码是:

MAIL_DRIVER=sendmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl

效果很好

【讨论】:

欢迎@BMShamsNahid 我不从默认托管 SMTP 发送的 smtp.gmail.com 服务器发送【参考方案2】:

我知道这个问题已经得到解答,但我有一个与原始描述相匹配的替代解决方案,可能会对某人有所帮助。您没有回答 Loek 关于您是否运行 cPanel 的问题。我们使用 lfd/csf 防火墙运行 cPanel,它具有列出可能连接的出站端口的 TCP_OUT 配置。端口 465 (tls) 不在该列表中,因此我们收到“连接被拒绝”报告,甚至尝试在 VPS 服务器的命令行上进行低级别 telnet 测试:

$ telnet smtp.gmail.com 465
Trying 74.125.140.109...
telnet: connect to address 74.125.140.109: Connection refused
Trying 74.125.140.108...
telnet: connect to address 74.125.140.108: Connection refused
Trying 2a00:1450:400c:c08::6d...
telnet: connect to address 2a00:1450:400c:c08::6d: Connection refused

相同的 telnet 测试在我的本地机器上运行良好。

将 465 添加到 TCP_OUT 列表后:

加载 WHM 控制面板 转至ConfigServer Security & Firewall 转至Firewall Configuration 找到 TCP_OUT 并将 465(或您尝试连接的任何端口)添加到列表中 点击页面底部的Change,然后点击Restart lfd/csf

Telnet 现在成功了,通过 phpMailer 发送 smtpauth 邮件也成功了:

$ telnet smtp.gmail.com 465
Trying 74.125.140.109...
Connected to smtp.gmail.com.
Escape character is '^]'.

(这表明套接字连接已建立。您可能不想真正与 Google 进行 SMTP 对话,因此请按 ctrl-] 并输入 quit 并按回车键关闭连接)

当然,这不是特定于 cPanel,您可能正在运行另一个防火墙管理器,该管理器不允许您尝试连接的端口上的出站连接。

【讨论】:

【参考方案3】:

经过几天的研究。由于我的 Godaddy 服务器,我遇到无法与主机 smtp.gmail.com [连接被拒绝] 建立连接的问题

由于 GoDaddy 会阻止通过端口 465 和 587 以及可能来自您站点的 25 的 SMTP 通信。他们将只允许邮件流通过他们自己的 SMTP 服务器。

这对我来说是个问题。希望它可以帮助某人

作为参考,请检查: https://pk.godaddy.com/community/Using-WordPress/Connection-Refused-for-GMail-SMTP/td-p/33107

【讨论】:

【参考方案4】:

我之前确实遇到过这个问题,我确实允许来自谷歌客户经理的不太安全的应用程序。我的问题就解决了。

您似乎也需要扩展应用程序的授权才能使用 gmail。

您可以按照以下步骤操作...

登录您的 gmail 帐户。

访问此link 以更改设置。

那你要开启Allow less secure apps

之后再次尝试通过您的主机发送电子邮件。

【讨论】:

Allow less secure apps 已经打开,并且可以从我的本地主机和我的个人 cpnel 服务器发送电子邮件。但是当我将我的项目上传到客户端的服务器时,它就不起作用了。

以上是关于无法在 laravel 5.6 电子邮件发送中与主机 smtp.gmail.com [连接被拒绝 #111] 建立连接的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)

使用带有 Laravel 的 Outlook / Office365 发送电子邮件 - 无法在 SMTP 服务器上进行身份验证

无法在实时服务器中从Laravel发送邮件[重复]

无法从 Laravel 应用程序发送电子邮件:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]

无法在 laravel 5.3 中发送密码重置链接?

无法在 laravel 中使用控制器发送 cc