Фильтрация сообщений из почтового ящика Exchange с помощью AQS
Расширенный синтаксис запросов (AQS) это синтаксис запроса, используемый Exchange в качестве альтернативы фильтрам поиска для выражения критериев поиска. AQS — это более гибкий способ поиска и выдачи результатов поиска по всем часто используемым полям элементов. AQS также удобен в использовании, прост в понимании и быстро осваивается. Использование AQS подходит для поиска сообщений по вложениям и получателям.
Создание поискового запроса с помощью AQS
Вы можете создать поисковый запрос с помощью AQS следующим образом:
ExchangeAdvancedSyntaxQueryBuilder
, который представляет собой конструктор поисковых выражений на основе расширенного синтаксиса запросов (AQS). ИлиExchangeAdvancedSyntaxMailQuery
, который создает строку AQS непосредственно на основе поддерживаемых ключевых слов.
Создайте поисковый запрос с помощью конструктора запросов
Чтобы создать поисковый запрос с помощью ExchangeAdvancedSyntaxQueryBuilder вам необходимо:
-
создайте экземпляр IEWSClient using GetEWSClient method
-
создайте экземпляр ExchangeAdvancedSyntaxQueryBuilder и задайте необходимые свойства для построения запроса.
-
call ListMessages or ListItems метод и пропуск MailQuery экземпляр, возвращенный GetQuery метод, как один из его параметров.
В приведенном ниже примере кода показано, как можно выполнить указанные выше шаги:
using (var client = EWSClient.GetEWSClient(...))
{
var advancedBuilder = new ExchangeAdvancedSyntaxQueryBuilder();
advancedBuilder.From.Equals("Jim Martin");
advancedBuilder.Subject.Contains("report");
advancedBuilder.HasAttachment.Equals(true);
var messages = client.ListMessages(client.MailboxInfo.InboxUri, advancedBuilder.GetQuery());
}
Создайте поисковый запрос напрямую с помощью AQS:
Чтобы создать поисковый запрос с помощью ExchangeAdvancedSyntaxMailQuery вам необходимо:
-
создайте экземпляр IEWSClient using GetEWSClient method
-
создайте экземпляр ExchangeAdvancedSyntaxMailQuery и передайте строку AQS. См. описание синтаксиса.
-
call ListMessages or ListItems метод и пропуск ExchangeAdvancedSyntaxMailQuery экземпляр в качестве одного из его параметров.
В приведенном ниже примере кода показано, как можно выполнить указанные выше шаги:
using (var client = EWSClient.GetEWSClient(...))
{
ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}