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

Laravel邮件发送异常求助:发件箱有副本但收件方未收到

排查Laravel发送Gmail邮件收不到的问题

我碰到过好几个和你一模一样的情况——发件箱能看到副本,但收件方完全没踪影(垃圾邮件里也找不到),结合你的配置和代码,给你梳理几个最可能的问题点和解决步骤:

1. Gmail SMTP 密码用错了(最常见的坑)

如果你的Gmail账号开了两步验证(2FA),直接填登录密码当MAIL_PASSWORD肯定不行,必须去生成一个应用专用密码(App Password):

  • 登进你的Google账号,进入「安全」设置页
  • 找到「应用专用密码」选项(前提是已经开启2FA)
  • 生成一个16位的密码,替换掉.env里的MAIL_PASSWORD

要是没开2FA,现在Gmail也已经取消了「不太安全的应用访问」选项,还是得先开2FA再用App Password,这是目前唯一合法的SMTP验证方式。

2. 发件人地址和配置的MAIL_USERNAME不匹配

你的.env里MAIL_USERNAME是email@gmail.com,但代码里from写的是mail@gmail.com——这会直接触发邮件服务商的SPF/DKIM验证失败,邮件会被悄悄拦截(不会进垃圾邮件,直接被丢弃)。

把代码里的发件人改成和MAIL_USERNAME一致就行:

$message->from('email@gmail.com', 'Administrator');

3. 配置缓存没更新

你执行了php artisan config:cache,但如果之后修改过.env,得先清除旧缓存再重新生成:

# 先清掉旧缓存
php artisan config:clear
# 开发环境其实不用缓存配置,嫌麻烦的话这步可以跳过
php artisan config:cache

开发阶段真的不建议开配置缓存,每次改个参数都要清缓存,太折腾。

4. 查看Laravel日志里的隐藏错误

有时候邮件发送看起来成功,但底层其实有错误(比如验证失败)。去storage/logs/laravel.log里搜搜和邮件相关的日志,比如有没有Swift_TransportException这类报错,能直接帮你定位问题。

5. 换个收件邮箱测试试试

有时候同一个Gmail账号给自己发邮件,会被Google的内部规则处理,可能不会出现在收件箱里。你换个非Gmail邮箱(比如Outlook、QQ邮箱)试试,看看能不能收到,排除是收件方Gmail的特殊规则问题。

按上面的步骤挨个排查,应该就能解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:33