【问题标题】:Search by category Exchange Server EWS按类别搜索 Exchange Server EWS
【发布时间】:2023-03-14 09:27:01
【问题描述】:

我需要获取所有具有特定类别名称的电子邮件,我该怎么做?

现在我有这个:

var col = new List<SearchFilter>();
col.Add(new SearchFilter.ContainsSubstring(ItemSchema.Categories, "Processed"));
var filter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, col.ToArray());

FindItemsResults<Item> findResults = service.FindItems(
    WellKnownFolderName.Inbox,
    filter,
    new ItemView(10)
);

但这给了我一个Microsoft.Exchange.WebServices.Data.ServiceResponseException,上面写着{"The Contains filter can only be used for string properties."}

我该怎么做?

【问题讨论】:

    标签: c# exchange-server exchangewebservices


    【解决方案1】:

    AFAIK 自 Exchange 2010 起,类别是一个多值字段,因此它不适用于搜索过滤器。但是,您可以使用AQS 搜索类别。下面的代码应该可以解决问题。

    ExchangeService service = GetService(); 
    
    var iv = new ItemView(1000);
    string aqs = "System.Category:Processed";
    FindItemsResults<Item> searchResult = null;
    do
    {
        searchResult = service.FindItems(WellKnownFolderName.Inbox, aqs, iv);
        foreach (var item in searchResult.Items)
        {
            Console.WriteLine(item.Subject);
        }
        iv.Offset += searchResult.Items.Count;
    } while (searchResult.MoreAvailable == true);   
    

    【讨论】:

    • 非常感谢!您知道如何搜索没有“已处理”类别的电子邮件吗?
    • @user3182508:您所要做的就是使用 NOT:string aqs = "NOT System.Category:Processed";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    相关资源
    最近更新 更多