You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常但服务器无法连接smtp.gmail.com(连接拒绝#111)求助

解决Gmail SMTP服务器连接拒绝问题(错误#111)

嘿,看你的描述,本地配置没问题但服务器上连不上Gmail SMTP,这个情况我碰过好多次了,大概率是服务器环境限制或者Gmail的安全设置在搞鬼,咱们一步步来排查:

1. 先查服务器的端口/防火墙限制

这是最常见的原因!服务器的防火墙很可能把587端口的出站请求给拦了。你先在服务器上跑两个命令测试连通性:

# 用telnet测试
telnet smtp.gmail.com 587
# 或者用nc(更直观)
nc -zv smtp.gmail.com 587

如果结果显示连接失败,那就是端口被封了。要么联系服务器提供商开放587端口的出站权限,要么自己在服务器防火墙(比如ufw、iptables)里加一条允许规则。

2. 检查Gmail账号的安全设置

Gmail对陌生设备/应用的登录管得很严:

  • 如果你的账号开了两步验证,绝对不能用普通登录密码,必须去Google账号的安全设置里生成一个「应用专用密码」,把这个密码替换配置里的MAIL_PASSWORD。
  • 如果没开两步验证,现在Gmail基本已经停用了“允许不太安全的应用”这个选项,还是建议用应用专用密码更稳妥。
  • 另外,登录你的Gmail账号,看看最近的登录记录里有没有服务器IP被拦截的提示,如果有,记得点击“允许此登录”或者把这个IP标记为可信。

3. 确认服务器能不能访问Google服务

有些服务器提供商(比如国内的)会屏蔽Google的服务,导致你连不上smtp.gmail.com。先测一下服务器能不能访问Google:

ping google.com

如果ping不通,那就是网络层面的问题,要么找服务商解决,要么换个SMTP服务商(比如Outlook、SendGrid这些)。

4. 再核对一遍配置细节

虽然本地能用,但还是再扫一眼配置:

  • 确保MAIL_ENCRYPTION是tls,587端口对应的是tls,465端口才用ssl,别搞混了。
  • 检查MAIL_PASSWORD有没有拼写错误,尤其是应用专用密码,复制的时候别漏了字符。
  • 如果你用的是Laravel这类框架,记得把MAIL_FROM_ADDRESS和MAIL_FROM_NAME也配置好,有些时候缺这个也会出问题。

5. 备选方案:换465端口试试

如果587端口确实被封死了,试试改用465端口,配置改成这样:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=sample@gmail.com
MAIL_PASSWORD=你的应用专用密码
MAIL_ENCRYPTION=ssl

改完再测试一下连接,说不定能绕过端口限制。


内容的提问来源于stack exchange,提问作者Bhaveh Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:46:49