Laravel Mail本地正常,Godaddy共享主机连接smtp.gmail.com失败求助
Laravel Mail在Godaddy共享主机连接Gmail SMTP失败的解决方案
我之前帮好几个开发者踩过Godaddy共享主机的这个坑,大概率是Godaddy的SMTP端口限制在搞鬼——他们的共享主机默认会封锁对外的25、465这类常用SMTP端口,而且对第三方SMTP服务(比如Gmail)有严格的出站限制。下面给你按优先级整理几个靠谱的解决方案,一步步来试:
1. 优先使用Godaddy自带的邮件服务器(最稳妥)
Godaddy允许用自己域名绑定的邮箱账户发信,完全不会有端口封锁问题,这是最省心的方案。修改你的.env配置:
MAIL_MAILER=smtp MAIL_HOST=smtpout.secureserver.net MAIL_PORT=465 MAIL_USERNAME=你的Godaddy邮箱地址(比如info@yourdomain.com) MAIL_PASSWORD=你的Godaddy邮箱登录密码 MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=你的Godaddy邮箱地址 MAIL_FROM_NAME="${APP_NAME}"
注意:如果是刚创建的Godaddy邮箱,先登录网页版确认能正常收发邮件,避免因为密码错误或者邮箱未激活导致失败。
2. 尝试Gmail的替代端口(坚持用Gmail的话)
Godaddy可能没封锁587端口,你可以试试调整Gmail的SMTP配置,同时必须用应用专用密码(因为Gmail现在已经淘汰了“不太安全的应用访问”选项,两步验证开启后才能生成应用密码):
MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=你的Gmail邮箱地址 MAIL_PASSWORD=你的Gmail应用专用密码(不是原登录密码) MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=你的Gmail邮箱地址 MAIL_FROM_NAME="${APP_NAME}"
步骤提醒:
- 先登录Google账号开启两步验证;
- 进入Google账号的“安全”页面,找到“应用专用密码”,生成一个专门用于Laravel Mail的密码,填到上面的配置里。
3. 排查主机缓存与连通性
部署完配置后,一定要执行缓存清除命令,不然Laravel会沿用旧的配置:
php artisan config:cache
另外,你可以在Godaddy主机的SSH终端里测试端口连通性,确认是不是端口被封:
telnet smtp.gmail.com 587
如果返回“Connection refused”,那基本可以确定是Godaddy封了这个端口,别再折腾Gmail,直接用方案1就行。
4. 备选:改用Sendmail或Mailgun驱动
如果上面的方案都不行,试试用Godaddy支持的Sendmail驱动:
MAIL_MAILER=sendmail MAIL_FROM_ADDRESS=你的邮箱地址 MAIL_FROM_NAME="${APP_NAME}"
或者用Mailgun这类API驱动的邮件服务(需要注册Mailgun账号并配置API密钥),API调用不受SMTP端口限制,稳定性更高。
内容的提问来源于stack exchange,提问作者kishan
相关产品推荐
相关产品推荐

