Microsoft Graph发送共享邮箱邮件时遇ErrorAccessDenied权限错误
解决从共享邮箱发送邮件的ErrorAccessDenied问题
以下是排查和解决该权限拒绝错误的关键步骤:
确认API权限已完成管理员同意
你配置的Mail.Send和Mail.Send.Shared权限,若为应用权限(无用户参与的后台模式),必须由Azure AD全局管理员完成管理员同意操作。进入Azure AD应用的「API权限」页面,确认权限状态显示为「已授予[租户名]管理员同意」,未完成同意的权限无法生效。验证令牌获取参数的正确性
调用https://login.microsoftonline.com/xxx/oauth2/v2.0/token获取令牌时,需根据权限类型匹配正确参数:- 应用权限模式:
scope参数必须设为https://graph.microsoft.com/.default - 委派权限模式:
scope需包含Mail.Send,且登录用户需在Exchange中拥有该共享邮箱的发送为或代表发送权限
- 应用权限模式:
调整请求体中的发件人字段
Graph API发送邮件时,建议使用from字段指定共享邮箱地址,而非sender字段(sender多用于实际发送者与显示发件人不一致的场景)。修改后的请求体示例:{ "message": { "subject": "Can I send emails from Postman?", "from":{ "emailAddress":{ "name":"<shared mailbox email address>", "address":"<shared mailbox email address>" } }, "body": { "contentType": "Text", "content": "Testing from Postman." }, "toRecipients": [ { "emailAddress": { "address": "someone@domain.com" } } ] }, "saveToSentItems": "false" }确认共享邮箱的有效性
确保请求URL中的<shared mailbox>是共享邮箱的邮箱地址或对象ID,且该共享邮箱在Azure AD和Exchange环境中正常存在。
内容的提问来源于stack exchange,提问作者Geezer
相关产品推荐
相关产品推荐

