c# - 按类别搜索 Exchange Server EWS

标签 c# exchange-server exchangewebservices

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

现在我有这个:

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 过滤器只能用于字符串属性。"}

我该怎么做?

最佳答案

据我所知,从 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);   

关于c# - 按类别搜索 Exchange Server EWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575264/

相关文章:

c# - 如何在 .NET 中实现匿名方法中捕获的值

python - 将电子邮件标记为已读python

exchange-server - 如何解释 Exchange 限制策略中的 EwsCutoffBalance?

c# - ExchangeService with AutodiscoverUrl 从错误的电子邮件地址发送

c# - 找到关键元素后如何从列表中获取下一个元素

c# - 是否有任何真实世界的 SharpKit 应用程序?

c# - 使用传递的参数附加方法后分离事件处理程序

exchange-server - 如何在 MS Exchange 2013 中捕获 session 创建的事件

c# - 获取Outlook中所有房间的列表

c# - EWS 获取邮箱类型(用户/资源/共享)