Фильтрация сообщений из почтового ящика Exchange с помощью AQS

Расширенный синтаксис запросов (AQS) это синтаксис запроса, используемый Exchange в качестве альтернативы фильтрам поиска для выражения критериев поиска. AQS — это более гибкий способ поиска и выдачи результатов поиска по всем часто используемым полям элементов. AQS также удобен в использовании, прост в понимании и быстро осваивается. Использование AQS подходит для поиска сообщений по вложениям и получателям.

Создание поискового запроса с помощью AQS

Вы можете создать поисковый запрос с помощью AQS следующим образом:

  • ExchangeAdvancedSyntaxQueryBuilder, который представляет собой конструктор поисковых выражений на основе расширенного синтаксиса запросов (AQS). Или
  • ExchangeAdvancedSyntaxMailQuery, который создает строку AQS непосредственно на основе поддерживаемых ключевых слов.

Создайте поисковый запрос с помощью конструктора запросов

Чтобы создать поисковый запрос с помощью ExchangeAdvancedSyntaxQueryBuilder вам необходимо:

В приведенном ниже примере кода показано, как можно выполнить указанные выше шаги:

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 вам необходимо:

В приведенном ниже примере кода показано, как можно выполнить указанные выше шаги:

using (var client = EWSClient.GetEWSClient(...))
{
    ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
    ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}