Laravel 8配置Google SMTP发信本地正常线上失效问题求解
Laravel 配置 Google SMTP 本地正常线上无法发信问题
问题描述
为实现Laravel集成Google SMTP发件功能,累计排查了一周时间,核心异常表现为:相同配置下本地开发环境可以正常发信,部署到线上服务器后发信功能完全失效。
当前.env内的邮件服务配置如下:
MAIL_MAILER=smtp MAIL_HOST=smtp.googlemail.com MAIL_PORT=465 MAIL_USERNAME=myadressmail MAIL_PASSWORD=mypasswordappgoogle MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=myadressemail MAIL_FROM_NAME="${APP_NAME}"
此前参照大量相关教程调整配置均未解决问题,整理常见故障排查方向及本次最终解决方案如下:
常见故障排查方向
- 线上服务器出站端口限制:绝大多数云服务商会默认封禁465、587等邮件服务常用端口的出站请求,避免服务器被用于滥发垃圾邮件,可通过telnet命令测试端口连通性验证
- 防火墙规则拦截:包括服务器系统内置的iptables、firewalld规则,或是云服务商平台侧的安全组、网络ACL规则,拦截了发往Google SMTP服务器的请求
- Google账号安全策略拦截:线上服务器IP未加入Google账号可信范围,触发了异常登录拦截机制,可登录Google账号查看安全通知确认
- Laravel配置缓存未清理:线上环境修改.env配置后未执行
php artisan config:clear清除配置缓存,导致运行时仍读取旧配置 - DNS解析异常:线上服务器无法正常解析smtp.googlemail.com的IP地址,可通过ping、nslookup命令验证解析结果
最终解决方案
本次故障根因为所用OVH服务器的防火墙拦截了发往Google SMTP的相关请求,调整防火墙规则放行对应端口的出站请求后,发信功能恢复正常。
内容的提问来源于stack exchange,提问作者TikkaMasala
相关产品推荐
相关产品推荐

