You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph发送邮件API时令牌报错问题求助

解决Microsoft Graph /me/sendMail API调用的BadRequest错误

错误原因分析

返回的错误信息明确指出:/me request is only valid with delegated authentication flow.,核心问题在于令牌的身份验证流类型不匹配:

  • 委托身份验证流:令牌关联具体用户身份,/me可解析为当前授权用户,这也是Graph Explorer默认使用的流,所以对应的令牌能正常调用API。
  • 应用身份验证流:令牌代表应用本身,不关联具体用户,无法识别/me标识,而你通过Postman获取的令牌大概率属于这种类型。

解决方案

方案1:切换Postman为委托权限流获取令牌

  1. 在Postman的OAuth 2.0配置中,选择Authorization Code授权类型(属于委托流范畴)。
  2. 权限配置中添加Mail.Send的委托权限(注意区分开应用权限)。
  3. 获取令牌时必须完成用户登录授权流程,确保令牌绑定具体用户身份。

方案2:修改API端点适配应用权限流

如果需要无用户交互的后台服务场景(必须用应用权限流),则修改请求URL为应用流支持的格式:

https://graph.microsoft.com/v1.0/users/{user-principal-name}/sendMail

将{user-principal-name}替换为实际发送邮件的用户邮箱(例如hamzaha@watira.ai),同时确保应用已被授予Mail.Send的应用权限,且完成管理员同意操作。

对应代码修改示例:

# 替换原url为指定用户的端点
url = 'https://graph.microsoft.com/v1.0/users/hamzaha@watira.ai/sendMail'

验证检查点

  • 查看令牌内容:委托流令牌包含scp字段,且值包含Mail.Send;应用流令牌包含roles字段,且值包含Mail.Send。
  • 确认权限配置:Azure AD应用的权限列表中,对应流的Mail.Send权限已正确添加并完成同意。

内容的提问来源于stack exchange,提问作者hamzah jazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 08:43:13