Мы работаем над приложением в области соответствия / мониторинга, где мы отслеживаем деятельность отдельного человека.Из-за этого мы хотим извлечь ВСЕ в почтовый ящик пользователя Office 365 - если в нем есть текст, написанный или полученный пользователем, мы хотим, чтобы он был там, даже если он был удален, очищен и т. Д.
Мы используем Graph API и имеем существующую реализацию, которая использует стандартную команду GET «messages»:
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.Посмотрев его, я теперь подозреваю, что могут быть и другие папки, которые не возвращаются этой командой.Существует довольно большой список известных имен папок , и я не уверен, что другие могут не быть включены в общий запрос сообщений.
Основываясь на этом сообщении , я знаю, что вы можете запрашивать сообщения в отсутствующих папках по 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;
Проблемы с этим:
- Я не знаю, как создать полный список каждой папки, в которой есть сообщения для пользователя
- Некоторые из папок (например, RecoverableItemsDeletions и ArchiveRecoverableItemsDeletions) могут содержать дубликаты, поэтому мне потребуется использовать словарь, чтобы избавиться от дубликатов
- Сначала было бы намного дороже создатьсписок соответствующих папок, а затем запрашивать их содержимое и содержимое их детей по одному запросу за раз.
- При масштабировании реализация папок за папками может подвергаться throttling (если мыотслеживает достаточно пользователей с достаточно большими почтовыми ящиками)
Кто-нибудь знает лучший способ сделать это?Спасибо!