使用OAuth2令牌发送Microsoft 365邮件时SMTP认证失败及权限疑问
SMTP OAuth2 认证失败问题排查与解决
一、获取https://outlook.office.com/SMTP.Send权限的步骤
- 进入Azure AD应用注册的「API权限」页面,点击「添加权限」
- 选择「Microsoft Graph」→ 切换到「应用权限」标签(因你使用client_credentials授权类型,需申请应用级权限)
- 在权限搜索框输入
SMTP.Send,即可找到归属为Outlook的该权限(注意区分Microsoft Graph下的同名权限,部分场景需使用Outlook域的权限) - 添加权限后,务必点击「授予管理员同意」,否则权限无法生效
二、Client Credentials授权类型的核心问题
- Client Credentials是应用自身身份认证,而非用户身份,因此无法直接以普通用户邮箱身份发送邮件
- 该模式下获取令牌时,必须指定范围为
https://outlook.office.com/.default,而非Microsoft Graph的范围 - 发送邮件时,SMTP用户名需填写租户内已授权的邮箱地址,同时确保该邮箱在Microsoft管理中心已启用「Authenticated SMTP」
三、额外排查项
- 用jwt.ms解析获取到的令牌,确认
aud(受众)字段值为https://outlook.office.com,否则令牌无效 - 检查SMTP服务器配置:服务器地址
smtp.office365.com,端口587,强制启用TLS加密 - 若需模拟特定用户发送邮件,建议切换为Authorization Code授权类型,该类型需用户完成授权流程,可直接指定
https://outlook.office.com/SMTP.Send范围
内容的提问来源于stack exchange,提问作者RacoonOnMoon
相关产品推荐
相关产品推荐

