Microsoft Graph:查询单个用户拥有访问权限的所有邮箱
查询用户与授权共享邮箱的关联关系
以下是基于Microsoft Graph应用权限的解决方案,用于获取用户被授权访问的额外邮箱:
1. 查询单个共享邮箱的授权用户
如果已知目标共享邮箱(如info@myorganisation.com),调用以下接口获取所有被授权访问该邮箱的用户:
GET /users/info@myorganisation.com/mailboxSettings/delegates
返回结果包含用户ID、权限级别(如ReadWrite、ReadOnly)等信息,可直接关联到对应的用户账号。
2. 验证用户对特定邮箱的权限
如果需要确认某个用户(如user_a@myorganisation.com)是否有权访问某邮箱,可调用权限筛选接口:
GET /users/info@myorganisation.com/permissionGrants?$filter=grantedTo/userPrincipalName eq 'user_a@myorganisation.com'
该接口会返回用户被授予的具体权限类型(如FullAccess),确认关联关系。
3. 批量构建用户-邮箱关联映射
若需批量处理所有用户与邮箱的关联,按以下步骤操作:
- 先获取组织内所有邮箱(含用户邮箱和共享邮箱):
GET /users?$filter=mail ne null&select=id,userPrincipalName,mail - 遍历每个邮箱,调用
mailboxSettings/delegates或permissionGrants接口,收集授权用户信息,最终构建用户与授权邮箱的关联表。
关键说明
- 你的应用已配置
Mail.Read权限,完全支持上述接口调用 - 可将关联数据缓存,定期(如每日)刷新,减少API调用频率
- 区分代理权限(通过
mailboxSettings/delegates返回)和全访问权限(通过permissionGrants返回)两种授权场景
内容的提问来源于stack exchange,提问作者Karsten Heimer
相关产品推荐
相关产品推荐

