如何通过Microsoft Graph API排除Recoverable Items影响,获取Deleted Items真实数据?
关于Microsoft Graph API获取Deleted Items及Recoverable Items的问题解答
1. 是否可排除Recoverable Items影响,仅获取Deleted Items实际邮件的大小和数量?
无法通过GET https://graph.microsoft.com/v1.0/me/mailFolders/deleteditems端点直接排除Recoverable Items的影响。该端点返回的totalItemCount和sizeInBytes是汇总整个已删除项目容器的数据,包含Recoverable Items下Deletions、Purges、Versions等子文件夹内的所有项目;而Outlook/OWA中显示的Deleted Items仅对应Recoverable Items里的Deletions子文件夹内容,统计范围不同导致了数据差异。
2. 替代方案获取准确数据
如果需要匹配Outlook/OWA显示的Deleted Items数据,推荐以下两种方案:
- 直接查询对应子文件夹的邮件并统计
先通过GET https://graph.microsoft.com/v1.0/me/mailFolders?$filter=displayName eq 'Recoverable Items'获取Recoverable Items文件夹ID,再查询其子文件夹找到Deletions的ID,最后调用:
请求头需添加GET https://graph.microsoft.com/v1.0/me/mailFolders/{deletionsFolderId}/messages?$count=trueConsistencyLevel: eventual以启用$count。数量直接取返回的@odata.count,总大小则遍历所有邮件的size字段求和。 - 遍历Deleted Items下的可见邮件并统计
直接调用GET https://graph.microsoft.com/v1.0/me/mailFolders/deleteditems/messages,返回的邮件即为Outlook/OWA中显示的Deleted Items内容。同样用$count获取数量,遍历size字段计算总大小,无需额外查找子文件夹ID,操作更直接。
3. 是否可通过Graph API管理Recoverable Items文件夹?
可以,具体操作如下:
- 查询Recoverable Items及其子文件夹
先获取Recoverable Items文件夹ID:
查询其子文件夹:GET https://graph.microsoft.com/v1.0/me/mailFolders?$filter=displayName eq 'Recoverable Items'
直接查询该文件夹下所有邮件:GET https://graph.microsoft.com/v1.0/me/mailFolders/{recoverableItemsFolderId}/childFoldersGET https://graph.microsoft.com/v1.0/me/mailFolders/{recoverableItemsFolderId}/messages - 清空或删除Recoverable Items内的项目
针对特定子文件夹(如Purges)内的邮件,使用批量删除接口:
单个删除指定邮件:POST https://graph.microsoft.com/v1.0/me/mailFolders/{targetFolderId}/messages/microsoft.graph.delete
注意:操作其他用户的Recoverable Items需要管理员权限(如DELETE https://graph.microsoft.com/v1.0/me/messages/{messageId}Mail.ReadWrite.Shared、MailboxSettings.ReadWrite等),且需符合合规要求。
内容的提问来源于stack exchange,提问作者John Park
相关产品推荐
相关产品推荐

