Фильтрация сообщений с помощью AQS из почтового ящика Exchange
Расширенный синтаксис запросов (AQS) — это синтаксис запросов, используемый Exchange в качестве альтернативы поисковым фильтрам для выражения критериев поиска. AQS является более гибким способом выполнения поисков и предоставления результатов поиска для всех общепринятых полей элементов. AQS также удобен для пользователя, легко воспринимается и быстро осваивается. Использование AQS подходит для поиска сообщений по вложениям и получателям.
Создание запроса поиска с помощью AQS
Вы можете создать запрос поиска с помощью AQS следующим образом:
ExchangeAdvancedSyntaxQueryBuilder
, который представляет собой строитель поискового выражения, основанный на Расширенном синтаксисе запросов (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);
}