Microsoft 365 Graph API读取其他用户邮箱报错404如何解决
解决方案
你提供的代码调用逻辑本身没有问题,出现404报错是权限配置、参数格式、目标账号状态三个维度的问题,按以下顺序排查调整即可:
1. 调整Azure AD应用注册的权限配置
这是最常见的问题原因,按你的应用使用场景配置对应权限:
- 如果你使用委托权限模式(即需要用户登录获取token的场景):
进入Azure Portal的应用注册页,找到你当前用的应用,在「API权限」栏添加Microsoft Graph的委托权限Mail.Read.All(只读邮件)或Mail.ReadWrite.All,添加完成后必须由全局管理员或Exchange管理员点击「授予管理员同意」,否则即使你用管理员账号登录,也只能访问自身邮箱。 - 如果你使用应用权限模式(即后台服务无用户登录,用客户端凭证获取token的场景):
同样在应用注册的「API权限」栏添加Microsoft Graph的应用权限Mail.Read.All或Mail.ReadWrite.All,添加后完成管理员同意即可,该模式默认可以访问租户内所有用户的邮箱,你可以额外配置应用访问策略,限制该应用只能访问指定邮箱提升安全性。
2. 校验user参数格式
你调用接口时传入的user参数,必须是目标用户的用户主体名称(UPN,通常就是用户的邮箱地址) 或者用户在Azure AD中的对象ID,不能使用邮箱别名、显示名等非唯一标识。你可以先调用GET https://graph.microsoft.com/v1.0/users/{你要传的user值}接口测试,如果该接口返回404,说明你传入的user值不符合要求。
3. 确认目标用户邮箱状态
确认目标用户已经分配了Exchange Online许可证,邮箱已正常激活启用,没有被禁用、软删除等异常情况,可以让目标用户登录Outlook网页版验证邮箱可正常访问。
内容的提问来源于stack exchange,提问作者Ofer Rahat
相关产品推荐
相关产品推荐

