C# 使用EWS从电子邮件收件箱搜索中排除特定主题的电子邮件

C# 使用EWS从电子邮件收件箱搜索中排除特定主题的电子邮件,c#,email,exchangewebservices,exchange-server-2010,C#,Email,Exchangewebservices,Exchange Server 2010,我正在使用EWS升级一个使用WebDAV查询Exchange Server 2003邮箱的应用程序,新版本将与Exchange Server 2010 SP2配合使用 我想排除主题包含以下搜索词的电子邮件项目: “FAT;分配;沙盒:分配” 我查看并了解了如何筛选收件人,以及电子邮件是否有附件,但现在我需要更进一步,只阅读没有上述主题的电子邮件(4种不同的字符串排除) 以下是我尝试的代码: searchFilterCollection.Add(new SearchFilter.SearchFil

我正在使用EWS升级一个使用WebDAV查询Exchange Server 2003邮箱的应用程序,新版本将与Exchange Server 2010 SP2配合使用

我想排除主题包含以下搜索词的电子邮件项目: “FAT;分配;沙盒:分配”

我查看并了解了如何筛选收件人,以及电子邮件是否有附件,但现在我需要更进一步,只阅读没有上述主题的电子邮件(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")));
但我知道(最后一项)只会查找包含这些术语的项目,我如何使用搜索过滤器排除这些术语呢?

我在以下网站上找到了答案:

我必须使用搜索过滤器。而不是对象:

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