Outlook 如何使用Graph API检索O365用户的每封邮件(包括已删除、已存档和可恢复的邮件)?

Outlook 如何使用Graph API检索O365用户的每封邮件(包括已删除、已存档和可恢复的邮件)?,outlook,office365,microsoft-graph-api,office365api,outlook-restapi,Outlook,Office365,Microsoft Graph Api,Office365api,Outlook Restapi,我们正在合规/监控领域开发一个应用程序,在该领域我们监控个人的活动。因此,我们希望提取用户的Office 365邮箱中的所有内容—如果它有用户写入或接收的文本,我们希望它在那里,即使它已被删除、清除等 我们使用的是Graph API,现有的实现使用标准的“messages”GET命令: GET https://graph.microsoft.com/v1.0/me/messages 我们正在使用GraphaPicClient(Microsoft.Graph v1.9.0),因此代码实际上如下所

我们正在合规/监控领域开发一个应用程序,在该领域我们监控个人的活动。因此,我们希望提取用户的Office 365邮箱中的所有内容—如果它有用户写入或接收的文本,我们希望它在那里,即使它已被删除、清除等

我们使用的是Graph API,现有的实现使用标准的“messages”GET命令:

GET https://graph.microsoft.com/v1.0/me/messages
我们正在使用GraphaPicClient(Microsoft.Graph v1.9.0),因此代码实际上如下所示:

IUserMessagesCollectionPage pageOfMessages = _graphClient.Users[userId].Messages.Request(options).Top(batchSize).Expand("attachments").GetAsync().Result;
GET https://graph.microsoft.com/v1.0/me/MailFolders/RecoverableItemsDeletions/messages
但是,这至少不会返回任何可恢复项目文件夹中的任何项目。在查看之后,我现在怀疑可能还有其他文件夹没有通过此命令返回。这里有一个相当多的列表,我不确定还有哪些其他的可能不包括在一个通用消息请求中

基于此,我知道您可以通过WellKnownFolderName一次一个地请求丢失文件夹中的邮件,如下所示:

IUserMessagesCollectionPage pageOfMessages = _graphClient.Users[userId].Messages.Request(options).Top(batchSize).Expand("attachments").GetAsync().Result;
GET https://graph.microsoft.com/v1.0/me/MailFolders/RecoverableItemsDeletions/messages
它甚至可以与GraphapicClient一起工作:

IMailFolderMessagesCollectionPage pageOfMessages = _graphClient.Users[userId].MailFolders["RecoverableItemsDeletions"].Messages.Request(options).Top(batchSize).Expand("attachments").GetAsync().Result;
这方面的问题是:

  • 我不知道如何为每个文件夹建立一个全面的列表,其中包含用户的消息
  • 有些文件夹(例如可恢复项删除和ArchiveRecoverableItemsDeletions)可能包含重复项,因此我需要使用字典来消除重复项
  • 首先建立一个相关文件夹的列表,然后一次一个请求请求它们的内容和它们孩子的内容,成本会高很多
  • 在规模上,一个文件夹一个文件夹的实现可能会受到限制(如果我们监视的用户数量足够大,邮箱也足够大)
  • 有人知道最好的方法吗?谢谢