在 EWS 上使用 AND 运算符时搜索过滤器不起作用?

Search filters not working when using AND operator on EWS?

我正在尝试使用两个过滤器过滤电子邮件:今天发送的电子邮件和来自特定收件人的电子邮件。 我尝试了以下方法:

DateTime searchdate = DateTime.Today;
            SearchFilter greaterthanfilter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, searchdate);
            SearchFilter lessthanfilter = new SearchFilter.IsLessThan(ItemSchema.DateTimeReceived, searchdate.AddHours(24));
            SearchFilter senderFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.From, "some-email-here@domain.com");
            SearchFilter dateFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, greaterthanfilter, lessthanfilter);
            SearchFilter allFilters = new SearchFilter.SearchFilterCollection(LogicalOperator.And, dateFilter, senderFilter);
            Folder folder = Folder.Bind(service, WellKnownFolderName.Inbox);
            FindItemsResults<Item> results = folder.FindItems(allFilters, new ItemView(50));
            foreach(Item i in results)
            {
                Console.WriteLine(i.Subject);
            }

如果我单独使用过滤器,一切正常。我要么收到按发件人过滤的电子邮件,要么收到按接收日期过滤的电子邮件。如果我将 LogicalOperator 更改为 OR,一切都会很好。 出于某种原因,当我添加 LogicalOperator.And 时,没有返回电子邮件。

如果你有更好的方法,请告诉我!

你的搜索过滤器在我测试时工作正常,作为替代方案,你可以使用 QueryString,如果没有别的,它应该更快 https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/querystring-querystringtypeand AQS/KQL 例如

(Received:today) AND (From:'user@domain.com')

如果你只在消息后说 sent/received 今天 lessthanfilter 是多余的(因为日期是未来的)

,你可以稍微简化你的 SearchFilters

按照@glen-scales 的建议,我查看了查询字符串,起初并没有帮助我,因为它们也没有解决问题! 原来这是你如何编写查询字符串的问题!这对我来说非常有效:

FindItemsResults<Item> findResults = service.FindItems(folder.Id, "from:email@domain.com AND Received:Today", new ItemView(20));

而这根本不起作用:

FindItemsResults<Item> findResults = service.FindItems(folder.Id, "(from:email@domain.com) AND (Received:Today)", new ItemView(20));

如果您没有注意到,区别在于括号的使用(尽管我相信它们应该没有问题)。

有关查询字符串的更多文档,请参阅以下 link:https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/ee693615%28v%3dexchg.140%29