Laravel使用Gmail SMTP发送重置密码邮件认证失败求助
解决Laravel使用Gmail SMTP发送重置密码邮件的535认证失败问题
1. 修正SMTP端口与加密方式的匹配错误
你的配置里MAIL_PORT=587却使用MAIL_ENCRYPTION=ssl,这是核心问题之一:
- 587端口对应的加密方式是tls,465端口才适配ssl
修改.env配置:
MAIL_ENCRYPTION=tls # 若偏好465端口,可改为: # MAIL_PORT=465 # MAIL_ENCRYPTION=ssl
2. 确认应用专用密码的生成与使用规范
应用专用密码生效必须满足两个条件:
- 账号已开启两步验证(2FA)
- 生成密码时选择「其他(自定义名称)」(比如命名为Laravel),直接复制生成的16位无空格密码填入
MAIL_PASSWORD,不要添加任何空格或额外符号
3. 检查Google账号安全状态
- 登录Google账号安全中心,查看是否因异地登录触发安全锁定,若有则解锁账号
- 确认未开启限制第三方应用访问的相关设置
4. 清除Laravel配置缓存
修改.env后必须清除缓存,否则Laravel会沿用旧配置:
php artisan config:clear php artisan cache:clear
5. 强制指定SMTP认证方式(可选)
若仍出现XOAUTH2相关错误,可在config/mail.php的smtp配置中指定仅使用LOGIN/PLAIN认证:
'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => env('MAIL_AUTH_MODE', 'login'), // 指定认证方式 ],
6. 验证邮箱账号拼写
确认MAIL_USERNAME是完整的Gmail邮箱地址,无拼写错误(比如漏写@gmail.com)
内容的提问来源于stack exchange,提问作者LEO W1NS
相关产品推荐
相关产品推荐

