Office365 SMTP OAuth认证失败:535 5.7.3 认证未成功
Office365 SMTP OAuth2认证535错误解决办法
核心问题:Scope不匹配
Office365的SMTP协议OAuth2认证不使用Microsoft Graph的SMTP.Send scope,必须使用Exchange Online专属的https://outlook.office.com/SMTP.Send scope。
步骤1:修正授权链接的Scope
将授权链接中的scope参数替换为:
https://outlook.office.com/SMTP.Send offline_access
完整授权链接示例:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=你的客户端ID&response_type=code&redirect_uri=你的回调地址&response_mode=query&scope=https://outlook.office.com/SMTP.Send+offline_access
步骤2:确认权限配置
- 在Azure应用注册中,确保添加Office365 Exchange Online下的
SMTP.Send委托权限(而非应用权限) - 若为企业租户用户,需管理员对该权限进行同意;个人用户可自行完成授权同意
- 无需保留Microsoft Graph的
SMTP.Send权限(该权限仅适用于Graph API调用,与SMTP协议无关)
步骤3:验证AUTH XOAUTH2格式细节
你的格式逻辑正确,但需注意:
user字段必须填写用户的完整邮箱地址(不能用别名或短账号)- 分隔符
^A是ASCII 0x01字符,确保代码中正确生成(比如Python用\x01,Java用\u0001) - 解码获取到的access token,检查
scp字段是否包含SMTP.Send,确认token是用正确scope生成的
步骤4:SMTP服务器配置规范
- 服务器地址:
smtp.office365.com - 端口:587(必须启用STARTTLS加密,端口465不支持OAuth2认证)
- 连接时先建立普通TCP连接,再发送
STARTTLS命令切换加密通道,之后再执行AUTH XOAUTH2认证
内容的提问来源于stack exchange,提问作者O.T.Vinta
相关产品推荐
相关产品推荐

