Laravel 9配置Office365 SMTP遇认证失败,咨询凭据使用问题
Laravel配置Office365 SMTP邮件发送的认证问题解决
核心疑问:MAIL_USERNAME和MAIL_PASSWORD该填什么?
个人Outlook/Office365账号
- 未开启多重身份验证(MFA):
MAIL_USERNAME填完整邮箱地址(如xxx@outlook.com),MAIL_PASSWORD填账号登录密码。但微软目前逐步限制这种纯密码认证,不建议长期使用。 - 已开启MFA:必须用**应用密码(App Password)**替代原账号密码作为
MAIL_PASSWORD,MAIL_USERNAME仍填完整邮箱地址。创建应用密码的步骤:登录微软账号安全设置,找到「应用密码」选项(需MFA已开启才会显示),生成新密码后填入配置。
企业Office365租户账号
- 先确认管理员已为你的邮箱开启SMTP AUTH权限(Exchange Admin Center中对应邮箱的设置里开启,默认可能关闭)。
- 若账号开启MFA,同样使用应用密码作为
MAIL_PASSWORD,MAIL_USERNAME填完整邮箱地址。 - 若想用应用凭据而非账号相关密码,微软更推荐使用Graph API发送邮件,SMTP配合应用凭据配置复杂(需OAuth2或证书认证),不适合简单场景。
额外配置检查
MAIL_FROM_ADDRESS必须和MAIL_USERNAME完全一致,Office365 SMTP不允许发件地址与认证邮箱不一致。- 检查服务器是否允许出站连接到
smtp.office365.com的587端口,避免防火墙拦截。 - 执行
php artisan config:clear清除Laravel配置缓存,确保新配置生效。
常见错误原因
- 「Failed to authenticate on SMTP server with username」:密码错误(未用应用密码)、MFA开启却使用原密码、SMTP AUTH未启用。
- 「Authentication unsuccessful, the request did not meet the criteria to be authenticated successfully」:IP被微软标记为不安全、账号存在异常登录记录,需登录微软账号完成安全验证。
内容的提问来源于stack exchange,提问作者Bvc...
相关产品推荐
相关产品推荐

