EWS(office 365)创建Seachfolder不成功。

问题描述 投票:0回答:1

我有一个程序,循环所有的电子邮件在Office 365使用的EWS服务,如果符合一些标准,他们得到标记的类别.我然后创建一个sechfolder,看看邮件,有类别。

这是我的代码

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
            }

Seachfolder已经创建了,但是当我在Outlook 365中访问它的时候,我得到了一个类似 "Nothing found "的信息(我有丹麦版本,所以不确定英文信息)。

经过一些试验和错误,我发现,我这个,而不是它的正常工作

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

所以我的问题是,为什么我的seachfolder在使用类别时不能工作,但在检查某物时却能正常工作。

额外的信息--如果我在outlook中创建一个sechfolder,使用相同的sech标准(类别),它可以正常工作。

c# outlook office365 exchangewebservices
1个回答
0
投票

EWS SearchFilters不支持查询多值字符串属性的逻辑(而底层的Store Restriction支持,这就是为什么它在Outlook中使用MAPI)。例如,你的搜索过滤器在FindItem请求中也不能工作。在Microsoft Graph中,似乎他们已经支持了一些额外的搜索逻辑,所以你可以创建搜索文件夹来进行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')"
}
© www.soinside.com 2019 - 2024. All rights reserved.