Фильтрация сообщений из почтового ящика Exchange
Aspose.Email for C++ позволяет разработчикам фильтровать сообщения в почтовом ящике Exchange, используя IEWSClient, MailQuery, and ExchangeQueryBuilder. Вы можете фильтровать сообщения по дате, отправителю, домену, MessageID, уведомлениям о доставке и многим другим критериям.
Чтобы извлечь сообщения из папки для дальнейшей обработки, IEWSClient. имеет следующие методы:
- ListMessages() - Получает все сообщения из почтового ящика.
- ListMessages() перегрузка — Возвращает только сообщения, соответствующие определённым условиям. Принимает MailQuery который определяет правила фильтрации, такие как ключевые слова темы, диапазоны дат и фильтрация по адресам.
Фильтрация сообщений с IEWSClient
Следующий пример кода демонстрирует, как выполнять запросы и извлекать конкретные электронные письма с сервера Exchange, используя Exchange Web Services (EWS) и Aspose.Email для C++. Он показывает полный процесс подключения к серверу Exchange (в данном случае Office 365), построения поискового запроса для нахождения сообщений с темой "Newsletter", получившихся сегодня, выполнения запроса к входящим, получения совпадающих сообщений и правильного управления жизненным циклом соединения с обработкой ошибок.
- Подключитесь к серверу Exchange с помощью IEWSClient.
- Создайте MailQuery или ExchangeQueryBuilder и задавать условия фильтрации.
- Вызвать ListMessages(folderUri, query) для получения отфильтрованных результатов.
Фильтрация сообщений по критерию
Приведённый выше пример кода фильтрует сообщения по теме и дате письма. Вы также можете фильтровать по другим свойствам. Ниже приведены некоторые примеры установки условий с использованием MailQuery.
Фильтрация по сегодняшней дате
Следующий пример кода показывает, как построить запрос для поиска писем, полученных сегодня.
Фильтрация по диапазону дат
Следующий пример кода показывает, как построить запрос для поиска писем, полученных за последние 7 дней.
Фильтрация по конкретному отправителю
Следующий пример кода показывает, как построить запрос для поиска писем от конкретного отправителя.
Фильтрация по домену
Следующий пример кода показывает, как построить запрос для поиска писем из конкретного домена.
Фильтрация по получателю
Следующий пример кода показывает, как построить запрос для поиска писем, отправленных конкретному получателю.
Фильтрация по MessageID
Следующий пример кода показывает, как построить запрос для поиска конкретного письма по его MessageId.
Фильтрация уведомлений о доставке почты
Следующий пример кода показывает, как построить запрос для поиска уведомлений о доставке почты (MDN).
Фильтрация по размеру сообщения
Следующий пример кода показывает, как построить запрос для поиска писем, размер которых превышает определённый порог.
Построение сложных запросов
При использовании MailQueryBuilder или ExchangeQueryBuilder, каждое установленное вами свойство создает условие фильтрации. Если эти условия заданы в отдельных выражениях, они объединяются с помощью логического AND, что означает, что все условия должны совпасть, чтобы сообщение было возвращено.
Это позволяет разработчикам создавать точные фильтры, такие как:
- Письма в рамках диапазона дат
- Письма из конкретного домена
- Электронные письма, соответствующие нескольким критериям одновременно
Комбинировать запросы с AND
Использование нескольких свойств билдера последовательно автоматически создаёт операцию AND.
Следующий пример извлекает сообщения, которые:
- Пришло из конкретного домена
- Получено до сегодня
- Получено за последние семь дней
Комбинировать запросы с OR
Чтобы подобрать сообщения, удовлетворяющие одному из двух условий, используйте метод Or().
Следующий пример получает сообщения, которые:
- Содержат “test” в теме, или
- Были отправлены от “noreply@host.com”
Фильтрация электронных писем с учетом регистра
Вы можете применять чувствительную к регистру или нечувствительную к регистру фильтрацию при запросе сообщений из почтового ящика Exchange. Чтобы управлять этим поведением, используйте флаг IgnoreCase, доступный в методах фильтрации. Установка в true включает нечувствительное к регистру сопоставление.
Пример ниже фильтрует сообщения, которые:
- Содержат слово "Newsletter" в теме (без учёта регистра)
- Получено сегодня
Постраничная навигация при фильтрации сообщений
При работе с большими почтовыми ящиками Exchange постраничный вывод позволяет получать сообщения небольшими, управляемыми пакетами. ListMessagesByPage метод IEWSClient возвращает результаты постранично на основе указанного размера страницы и критериев запроса.
Пример ниже демонстрирует, как:
- Создайте фильтр, используя MailQueryBuilder.
- Получайте результаты постранично.
- Перебирайте все страницы до последней.
- Подсчитайте общее количество соответствующих сообщений.