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

Laravel 5.5重置密码邮件已发送但Gmail未收到问题排查

嘿,我来帮你排查下这个Laravel邮件发不出去的问题——我之前帮好几个开发者解决过类似的坑,大概率是下面几个原因之一:

可能的问题排查方向

1. 先确认SMTP配置的准确性

别小看基础配置,很多时候问题就出在这儿:

  • 先核对.env里的MAIL_HOST:mail.example.com是不是你邮件服务商提供的真实SMTP地址?比如阿里云邮箱是smtp.aliyun.com,腾讯企业邮是smtp.exmail.qq.com,别用通用占位符
  • 如果你的邮箱开启了双因素认证(2FA),MAIL_PASSWORD绝对不能填普通登录密码,得去邮箱后台生成一个应用专用密码填在这里(比如Gmail的应用密码需要在Google账号安全设置里生成)
  • 端口和加密方式要匹配:465配SSL是对的,但有些服务商要求用587配TLS,你可以试试切换成MAIL_PORT=587 + MAIL_ENCRYPTION=tls试试

另外,修改.env后一定要清配置缓存,不然Laravel会用旧配置:

php artisan config:clear
php artisan config:cache

2. 查看Laravel的邮件发送日志

默认情况下Laravel不会记录邮件发送的详细错误,你得开启日志来抓问题:

  • 在.env里添加MAIL_LOG_CHANNEL=stack,或者修改config/mail.php把日志驱动打开
  • 再触发一次密码重置,然后去storage/logs/laravel.log里搜「mail」相关的日志,里面会有具体报错,比如SMTP认证失败、连接超时、被服务商拒绝之类的信息,这是最直接的排查线索

3. 检查服务器端口是否被封禁

生产服务器的465/587端口可能被防火墙或者服务商封禁了,你可以在服务器上用telnet测试连通性:

telnet mail.example.com 465

如果连接失败(提示无法打开连接),那就是端口的问题,得联系服务器提供商开放对应的端口,或者换服务商指定的其他端口

4. 域名的SPF/DKIM配置是否齐全

就算SMTP连接成功,Gmail也可能直接拦截你的邮件,因为你的发送域名没有配置邮件认证记录:

  • SPF记录:需要在域名的DNS后台添加一条TXT记录,授权你的SMTP服务器可以代表这个域名发邮件,比如v=spf1 include:mail.example.com ~all
  • DKIM记录:有些邮件服务商要求配置DKIM签名,用来证明邮件没有被篡改,你得去邮件服务商后台获取DKIM密钥,然后在DNS里添加对应的TXT记录
  • 可以用邮件头分析工具(如果能收到测试邮件的话)或者在线工具检查你的域名SPF/DKIM是否配置正确

5. 邮件队列有没有在运行

如果你开启了队列(.env里QUEUE_CONNECTION不是sync),邮件不会立即发送,而是会进入队列等待处理。这时候你得确认队列worker是否在后台运行:

php artisan queue:work

如果队列没启动,邮件就一直堆在队列里,根本发不出去

6. 试试换个邮箱测试

Gmail对陌生域名发来的邮件拦截特别严,你可以先换个非Gmail邮箱(比如公司邮箱、QQ邮箱)测试,看看能不能收到。如果其他邮箱能收到,那就是Gmail的拦截规则问题,得优化邮件内容或者完善域名认证


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:35