EWS (офис 365) создать Seachfolder не работает - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть программа, которая зацикливает все электронные письма в Office 365, используя службы EWS, и, если они соответствуют некоторым критериям, они помечаются категорией. Затем я создаю папку поиска, которая просматривает письма, имеющие категорию.

Это мой код

SearchFolder searchFolder = new SearchFolder(service);
            SearchFilter filter = new SearchFilter.ContainsSubstring(ItemSchema.Categories, categoryName);
            searchFolder.DisplayName = "Mulige CPR-data";

            searchFolder.SearchParameters.RootFolderIds.Add(WellKnownFolderName.Inbox);
            searchFolder.SearchParameters.Traversal = SearchFolderTraversal.Deep;
            searchFolder.SearchParameters.SearchFilter = filter;

            try
            {
                searchFolder.Save(WellKnownFolderName.SearchFolders);
                Console.WriteLine(searchFolder.DisplayName + " added.");
            }
            catch (Exception e)
            {
                //error handling
            }

Папка поиска создается, но когда я обращаюсь к ней в Outlook 365, я получаю сообщение говоря что-то вроде «Ничего не найдено» (у меня есть версия dani sh, поэтому я не уверен насчет сообщения engli sh).

После сома и проб и ошибок я обнаружил, что вместо этого он работает нормально

SearchFilter filter = new SearchFilter.ContainsSubstring(ItemSchema.Subject, "subjectTest");

Итак, мой вопрос: почему моя папка seach не работает при использовании категорий, но работает нормально, когда проверяет что-то в теме.

Дополнительная информация - если я создаю seachfolder в Outlook, используя По тому же критерию поиска (категория) он работает нормально.

1 Ответ

0 голосов
/ 04 мая 2020

EWS SearchFilters не поддерживают логи c для запроса свойств многозначных строк (в то время как основное ограничение магазина делает это, именно поэтому оно работает в Outlook, который использует MAPI). Например, ваш поисковый фильтр не будет работать в запросе FindItem. В графике Microsoft кажется, что они поддерживают некоторые дополнительные логи поиска c, поэтому вы можете создавать папки поиска, которые будут выполнять поиск MV, например, будет работать следующее

https://graph.microsoft.com/v1.0/me/mailfolders('searchfolders')/childfolders


{
    "@odata.type": "microsoft.graph.mailSearchFolder",
    "displayName": "Red Items",
    "includeNestedFolders": true,
    "sourceFolderIds": [
        "AQ.."
    ],
    "filterQuery": "categories/any(a:a eq 'Red Category')"
}
...