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

时间:2018-12-07 21:42:29

标签: outlook office365 microsoft-graph office365api outlook-restapi

我们正在合规性/监视空间中开发一个应用程序,在该应用程序中我们监视个人的活动。因此,我们希望将用户的所有内容都拉到用户的Office 365邮箱中-如果其中包含用户写或收到的文本,即使它已被删除,清除等,我们也希望它存在。

我们正在使用Graph API,并且具有使用标准“消息” GET命令的现有实现:

GET https://graph.microsoft.com/v1.0/me/messages

我们正在使用GraphApiClient(Microsoft.Graph v1.9.0),因此代码实际上如下所示:

IUserMessagesCollectionPage pageOfMessages = _graphClient.Users[userId].Messages.Request(options).Top(batchSize).Expand("attachments").GetAsync().Result;

但是,至少这不会返回任何RecoverableItems文件夹中的任何项目。在调查之后,我现在怀疑此命令也可能没有返回其他文件夹。 Well-known folder names的列表非常多,我不确定通用的Messages请求中可能不包括哪些其他内容。

基于此post,我知道您可以一次按WellKnownFolderName请求缺少的文件夹中的消息,如下所示:

GET https://graph.microsoft.com/v1.0/me/MailFolders/RecoverableItemsDeletions/messages

它甚至可以与GraphApiClient一起使用:

IMailFolderMessagesCollectionPage pageOfMessages = _graphClient.Users[userId].MailFolders["RecoverableItemsDeletions"].Messages.Request(options).Top(batchSize).Expand("attachments").GetAsync().Result;

与此有关的问题是:

  1. 我不知道如何为每个包含向用户发送消息的文件夹建立一个全面的列表
  2. 某些文件夹(例如RecoverableItemsDeletions和ArchiveRecoverableItemsDeletions)可以包含重复项,因此我需要使用字典来消除重复项
  3. 首先建立一个相关文件夹的列表,然后一次请求一个请求,然后请求它们的内容和孩子的内容,这会贵很多。
  4. 在规模上,逐个文件夹的实现可能要受throttling的约束(如果我们要监视具有足够大邮箱的足够用户)

有人知道最好的方法吗?谢谢!

0 个答案:

没有答案