2014-03-12 50 views
0

我正在使用EWS升级使用WebDAV查询Exchange Server 2003邮箱的应用程序,新版本将与Exchange Server 2010 SP2一起使用。不包含电子邮件收件箱中的某些主题的电子邮件使用EWS搜索

我想排除有主题中包含这些搜索字词的电子邮件项目: “脂肪;转让;沙盒:分配”

MSDN库:使用EWS托管API搜索的邮箱项目] 1,并找到了如何过滤收件人,并且电子邮件有附件,但现在我需要更进一步,只阅读没有上述主题的电子邮件(4个不同的字符串排除)

这里是我试过的代码:

searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false))); 
searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.HasAttachments, true))); 
searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.ContainsSubstring(EmailMessageSchema.Subject, "FATS;Assignment;Sandbox: Assignment"))); 

但我知道(最后一项)只能找到包含这些条款的项目,我怎样才能使用SearchFilter排除这些条款?

回答

1

我发现MSDN Library: Filtering on Not by using the EWS Managed API了答案:

我必须使用SearchFilter.Not对象:

searchFilterCollection.Add(new SearchFilter.Not(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "FATS"))); 

然后我再补充一点到集合:

searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false))); 
searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.HasAttachments, true))); 

searchFilterCollection.Add(new SearchFilter.Not(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "FATS"))); 

// add all to the collection... 
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray()); 
相关问题