Фильтрация писем с почтового сервера

Фильтрация сообщений по отправителю, получателю или дате

Этот Pop3Client класс, описанный в Подключиться к POP3‑серверу, предоставляет ListMessages() метод, который получает все сообщения из ящика. Чтобы получить только сообщения, соответствующие некоторому условию, используйте перегруженный ListMessages() метод, который принимает MailQuery в качестве аргумента. The MailQuery класс предоставляет различные свойства для указания условий поиска, например, дата, тема, отправитель, получатель и т.д. The MailQueryBuilder класс используется для построения поискового выражения. Сначала задаются все условия и ограничения, а затем MailQuery заполняется запросом, разработанным MailQueryBuilder. Это MailQuery объект класса используется Pop3Client для извлечения отфильтрованной информации с сервера. Эта статья показывает, как фильтровать электронные сообщения из почтового ящика. Первый пример иллюстрирует фильтрацию сообщений по дате и теме. Мы также показываем, как фильтровать по другим критериям и как построить более сложные запросы. Также демонстрируется применение фильтра даты и времени для получения конкретных писем из ящика. Кроме того, показано, как применять фильтрацию с учётом регистра.

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

Чтобы отфильтровать сообщения из ящика:

  1. Подключение к POP3‑серверу.
  2. Создайте экземпляр MailQuery и задать нужные свойства.
  3. Вызвать Pop3Client.ListMessages(MailQuery query) метод и передайте MailQuery в параметрах, чтобы получить только отфильтрованные сообщения.

В следующем фрагменте кода показано, как подключиться к POP3‑ящику и получить сообщения, пришедшие сегодня и содержащие слово "newsletter" в теме.

Получение сообщений по определённым критериям

Приведённые выше образцы кода показывает, как можно фильтровать сообщения по теме письма и дате. Мы также можем использовать другие свойства для установки поддерживаемых условий. Ниже приведены примеры задания условий с использованием MailQuery.

Следующие фрагменты кода показывают, как фильтровать письма по другим критериям:

  • Найти письма, доставленные сегодня.
  • Найти письма, полученные в диапазоне.
  • Найти письма от конкретного отправителя.
  • Найти письма, отправленные с конкретного домена.
  • Найти письма, отправленные конкретному получателю.

Сегодняшняя дата

В следующем фрагменте кода показано, как найти письма, доставленные сегодня.

Диапазон дат

В следующем фрагменте кода показано, как найти письма, полученные в диапазоне.

Конкретный отправитель

В следующем фрагменте кода показано, как найти письма от конкретного отправителя.

Конкретный домен

В следующем фрагменте кода показано, как найти письма, отправленные с конкретного домена.

Конкретный получатель

В следующем фрагменте кода показано, как найти письма, отправленные конкретному получателю.

Построение сложных запросов

Если разные MailQueryBuilder свойства задаются в отдельных операторах, затем все условия будут совпадать. Например, если мы хотим получить сообщения в диапазоне дат и от конкретного хоста, нам нужно написать три оператора.

Комбинировать запросы с AND

В следующем фрагменте кода показано, как комбинировать запросы с помощью И.

Комбинировать запросы с OR

MailQueryBuilder предоставляет Or() метод, принимающий два MailQuery экземпляров в качестве параметров. Он получает сообщения, соответствующие хотя бы одному из двух указанных условий. Ниже приведён фрагмент кода, показывающий, как отфильтровать сообщения, в теме которых есть «test» или отправителем является "noreply@host.com". Следующий фрагмент кода демонстрирует, как комбинировать запросы с помощью OR.

Фильтры с учётом регистра

API также предоставляет возможность фильтровать письма из ящика на основе чувствительных к регистру критериев. Следующие методы позволяют выполнять поиск писем с указанием флага чувствительности к регистру.

  • Method Aspose.Email.StringComparisonField.Contains(string value, bool ignoreCase)
  • Method Aspose.Email.StringComparisonField.Equals(string value, bool ignoreCase)
  • Method Aspose.Email.StringComparisonField.NotContains(string value, bool ignoreCase)
  • Method Aspose.Email.StringComparisonField.NotEquals(string value, bool ignoreCase)