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