簡體   English   中英

按類別搜索 Exchange Server EWS

[英]Search by category Exchange Server EWS

我需要獲取所有具有特定類別名稱的電子郵件,我該怎么做?

現在我有這個:

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."}

我該怎么做?

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);   

我使用以下代碼來查找所有未設置“已處理”類別且在給定日期之后收到的消息。

                SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And,
                                   new SearchFilter.Not(new SearchFilter.IsEqualTo(EmailMessageSchema.Categories, "Processed")),                                       
                                   new SearchFilter.IsGreaterThan(EmailMessageSchema.DateTimeReceived, minDate));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM