无法在 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_driversmtp
更改为 sendmail
并将 prot 465 更改为 587
【参考方案1】:
问题已解决。 我在 MAIL_DRIVER 和 MAIL_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 应用程序发送电子邮件:无法与主机 smtp.gmail.com 建立连接 [连接超时 #110]