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

Laravel部署服务器后Gmail发件报错535:用户名密码不被接受

解决Laravel部署后Gmail SMTP 535凭证错误的问题

嘿,这个问题我之前也踩过坑!本地跑联系页邮件功能完全正常,一上线就报535用户名密码不通过,大概率是Gmail的安全机制或者线上环境的配置缓存搞的鬼,给你几个靠谱的解决步骤:

1. 改用Gmail应用密码(核心解决办法)

现在Gmail已经禁止直接使用账户密码作为SMTP登录凭证了,必须先开启两步验证,再生成专属的「应用密码」:

  • 登录你的app@gmail.com账户,进入安全设置页面
  • 先开启「两步验证」(如果还没开启的话)
  • 找到「应用密码」选项,生成一个专门用于Laravel应用的密码(这个密码是16位无空格的字符串)
  • 把生成的应用密码替换掉.env里的MAIL_PASSWORD值,别再用原来的账户密码了!

2. 清除Laravel配置缓存

线上服务器会自动缓存.env的配置内容,哪怕你修改了.env,应用可能还是在读取旧的缓存值,一定要执行以下命令清除缓存:

php artisan config:clear
php artisan cache:clear
php artisan config:cache

执行完后最好重启一下你的应用服务(比如Nginx、PHP-FPM),确保新配置生效。

3. 核对.env配置细节

再仔细检查一遍你的配置,别犯低级错误:

  • 确认MAIL_USERNAME是完整的邮箱地址:app@gmail.com,没有拼写错误
  • 确认MAIL_PASSWORD是刚才生成的应用密码,没有多余的空格、换行或者拼写错误
  • 检查MAIL_ENCRYPTION=tls、MAIL_PORT=587、MAIL_HOST=smtp.gmail.com这些配置都是正确的(587端口对应tls加密,465端口对应ssl,别搞混)

4. 检查服务器防火墙/安全组

有些线上服务器的防火墙或安全组会默认阻止出站的SMTP连接,要确保你的服务器允许访问smtp.gmail.com的587端口,不然连Gmail服务器都连不上,肯定会报错。

5. 快速测试邮件配置

可以写个简单的测试路由来验证配置是否生效:

Route::get('/test-mail', function () {
    try {
        \Illuminate\Support\Facades\Mail::raw('这是Laravel发送的测试邮件', function ($message) {
            $message->to('你的测试邮箱@example.com')
                    ->subject('Laravel邮件测试');
        });
        return '邮件发送成功!';
    } catch (\Exception $e) {
        return '发送失败:'.$e->getMessage();
    }
});

部署后访问这个路由,能快速定位问题到底出在哪。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:22:57