Фильтрация сообщений с помощью AQS из почтового ящика Exchange
Синтаксис расширенного запроса (AQS) это синтаксис запросов, используемый Exchange в качестве альтернативы поисковым фильтрам для выражения критериев поиска. AQS — более гибкий способ выполнения поисков и получения результатов по всем часто используемым полям элементов. AQS также удобен для пользователей, прост в понимании и быстр в освоении. Использование AQS подходит для поиска сообщений по вложениям и получателям.
Создание поисковых запросов AQS
Вы можете создать поисковый запрос с помощью AQS, используя:
- ExchangeAdvancedSyntaxQueryBuilder, который представляет конструктор поискового выражения на основе Advanced Query Syntax (AQS). или
- ExchangeAdvancedSyntaxMailQuery, который напрямую создаёт строку AQS на основе поддерживаемых ключевых слов.
Использование конструктору запросов
Для создания поискового запроса с ExchangeAdvancedSyntaxQueryBuilder вам необходимо:
-
создать экземпляр IEWSClient используя GetEWSClient метод
-
создать экземпляр ExchangeAdvancedSyntaxQueryBuilder и установить необходимые свойства для построения запроса.
-
вызов ListMessages или 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 используя GetEWSClient метод
-
создать экземпляр ExchangeAdvancedSyntaxMailQuery и передать строку AQS. См. описание синтаксиса.
-
вызов ListMessages или ListItems метод и передать ExchangeAdvancedSyntaxMailQuery экземпляр в качестве одного из его параметров.
Ниже приведён образец кода, показывающий, как выполнить перечисленные выше шаги:
using (var client = EWSClient.GetEWSClient(...))
{
ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}