Laravel 8使用Office365发信提示SMTP服务器认证失败如何解决?
Laravel 8 对接Office365 SMTP 535认证错误解决方案
核心原因说明
你已经确认账号密码正确的前提下,出现535认证失败基本是Office365账号的安全配置限制、或者Laravel邮件配置的隐性参数缺失导致的,按以下顺序排查即可:
排查步骤
1. 优先检查Office365账号侧配置
- 确认该SMTP账号没有开启多重身份验证(MFA),如果开启了MFA,必须创建应用专用密码代替普通账号密码来做SMTP认证
- 检查Office365 admin后台的SMTP认证开关:进入Microsoft 365 管理中心→用户→活跃用户→选中对应SMTP账号→邮件→管理电子邮件应用→确认「已验证的SMTP」选项是勾选状态
- 确认账号没有被限制使用SMTP提交,也没有触发临时安全风控冻结
2. 修正Laravel配置缺失
你当前的.env配置缺少Office365要求的特定认证参数,需要先修改config/mail.php文件,找到smtp mailer的配置段,新增auth_mode配置:
'mailers' => [ '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' => 'login', // 新增这行,强制使用LOGIN认证,跳过Office365不兼容的XOAUTH2认证 ], ],
3. 配置更新后刷新缓存
执行Laravel配置清理命令,确保新配置生效:
php artisan config:clear php artisan cache:clear
验证
配置调整完成后重新测试忘记密码发信功能即可正常发送。
内容的提问来源于stack exchange,提问作者Shimul
相关产品推荐
相关产品推荐

