Laravel项目共享主机生产环境遭遇Swift_TransportException无法连接Gmail SMTP发送邮件的问题求助
Laravel Gmail SMTP 生产环境(cPanel共享主机)发送失败解决方案
我之前在cPanel共享主机上部署Laravel项目时,也碰到过和你一模一样的Gmail SMTP连接问题,结合你的报错信息和环境配置,给你几个实测有效的排查和解决方向:
1. 优先排查共享主机的端口限制
共享主机服务商经常会封锁587、465这类常用SMTP端口来防止垃圾邮件,这是最常见的原因。
- 直接联系你的主机商确认smtp.gmail.com的587/465端口是否允许出站连接
- 如果端口被封,建议改用cPanel自带的邮件服务(比如用主机提供的域名邮箱),这种方式不需要依赖外部SMTP,稳定性更高
2. 替换为Gmail APP密码(替代低安全应用权限)
Google目前已经逐步淘汰了"低安全应用权限"的支持,即使你开启了这个选项,也可能无法正常连接。更可靠的方式是使用APP密码:
- 给你的Google账号开启两步验证
- 进入Google账号的「安全」页面,找到「应用密码」选项(只有开启两步验证后才会显示)
- 生成一个专门用于Laravel项目的应用密码
- 修改.env文件中的
MAIL_PASSWORD为这个应用密码,注意去掉密码前后的引号(引号可能导致Laravel解析密码错误)
3. 检查PHP环境配置
确保你的共享主机PHP环境满足SMTP连接的要求:
- 登录cPanel,查看PHP信息(phpinfo),确认openssl扩展已启用(TLS/SSL连接必须依赖这个扩展)
- 检查php.ini中的
disable_functions列表,确认stream_socket_client函数没有被禁用(该函数是Laravel发送邮件的核心函数),如果被禁用,联系主机商解除限制
4. 清除Laravel配置缓存
生产环境下Laravel会缓存配置文件,你修改.env后必须执行以下命令更新缓存:
php artisan config:clear php artisan config:cache
如果不执行这一步,Laravel会一直使用旧的配置,导致修改无法生效。
5. 尝试调整SMTP配置组合
如果以上方法都不行,可以试试调整.env中的配置:
- 切换加密方式和端口:
MAIL_ENCRYPTION=ssl+MAIL_PORT=465,或者MAIL_ENCRYPTION=tls+MAIL_PORT=25(部分主机开放25端口) - 尝试使用Gmail的中继服务器:
MAIL_HOST=smtp-relay.gmail.com(需要提前在Google Workspace中配置允许你的服务器IP发送)
内容的提问来源于stack exchange,提问作者Kamrul Hasan
相关产品推荐
相关产品推荐

