如何通过Microsoft Graph API使用userID查询指定用户的邮箱订阅列表
解答
有完全匹配你需求的调用方式,可以直接拿到指定用户邮箱专属的订阅列表,无需拉取全量订阅后再手动过滤,逻辑和你给出的OneDrive订阅查询完全一致。
你可以直接调用邮箱对应资源下的Subscriptions端点,示例代码如下:
// 查询指定用户收件箱的订阅列表 IMailFolderSubscriptionsCollectionPage inboxSubscriptions = await graphClient.Users["{UserId}"] .MailFolders["Inbox"] .Subscriptions .Request() .GetAsync();
如果需要查询其他邮箱相关资源的订阅,调整路径即可:
- 查询用户默认日历的订阅:将路径替换为
.Calendar.Subscriptions - 查询用户指定联系人文件夹的订阅:将路径替换为
.ContactFolders["{文件夹ID}"].Subscriptions - 查询用户任务列表的订阅:将路径替换为
.Planner.Tasks["{任务ID}"].Subscriptions
这种方式返回的结果只会包含绑定在对应邮箱资源下的订阅,不会混入OneDrive、SharePoint等其他服务的订阅,完全符合你的筛选需求。调用前请确保你的应用已经申请了对应资源的订阅读取权限,比如查询邮件订阅需要Mail.ReadBasic及以上权限,查询日历订阅需要Calendars.Read及以上权限。
如果你需要一次性拉取该用户所有邮箱相关资源的所有订阅,也可以调用全量订阅接口后通过resource字段过滤符合邮箱资源路径前缀的条目,但这种方式的性能和查询效率都远低于直接调用对应资源的Subscriptions端点,更推荐按需查询对应资源的订阅。
内容的提问来源于stack exchange,提问作者Sourabh Gupta
相关产品推荐
相关产品推荐

