Фильтрация сообщений с сервера с помощью клиента IMAP

The ImapClient класс предоставляет ListMessages() метод, который получает все сообщения из почтового ящика. Чтобы получать только сообщения, соответствующие определенному условию, используйте перегруженный ListMessages() метод, который принимает MailQuery в качестве аргумента. MailQuery класс предоставляет различные свойства для указания условий, например дату, тему, отправитель, получатель и т. д. В первом примере показано, как фильтровать сообщения по дате и теме. Мы также покажем, как фильтровать по другим критериям и создавать более сложные запросы. API также предоставляет возможность применять критерии поиска, учитывающие регистр символов, для точного соответствия критериям фильтрации. API также позволяет указать кодировку поисковой строки для фильтрации сообщений из почтового ящика.

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

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

В следующем фрагменте кода показано, как подключиться к почтовому ящику IMAP и получать сообщения, пришедшие сегодня и содержащие слово «информационный бюллетень» в теме.

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

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

  1. Сегодняшняя дата.
  2. Диапазон дат.
  3. От конкретного отправителя.
  4. Из определенного домена.
  5. От конкретного получателя.

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

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

Диапазон дат

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

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

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

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

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

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

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

Создание сложных запросов

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

Объединение запросов с AND

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

Объединение запросов с OR

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

Фильтрация по внутренней дате

Сообщения могут быть извлечены с сервера на основе InternalDate, однако иногда сервер не возвращает все сообщения, видимые в папке «Входящие». Это может быть связано с часовым поясом сервера, поскольку на всех серверах, таких как UTC, может быть не так. Gmail. Aspose отправляет команды типа 008 SEARCH 4 мая 2014 года в соответствии с протокол IMAP однако результат может отличаться из-за настроек часового пояса сервера. Новый участник добавлен в ImapMessageInfo as InternalDate что дополнительно помогает фильтровать сообщения. Следующий фрагмент кода показывает использование InternalDate для фильтрации сообщений.

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

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

Укажите кодировку для конструктора запросов

API ImapQueryBuilder Конструктор можно использовать для указания кодировки строки поиска. Это также можно установить с помощью DefaultEncoding свойство конструктора MailQueryBuilder. В следующем фрагменте кода показано, как указать кодировку для конструктора запросов.

Фильтрация сообщений с поддержкой пейджинга

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

Фильтрация сообщений с помощью настраиваемого флага

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

Например, стандарт RFC 3501 не разрешает поиск сообщений на основе наличия вложений в сообщениях. Но Gmail provides Расширения IMAP которые позволяют выполнить такой поиск. В следующем фрагменте кода показано, как сделать соответствующий запрос.

ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");

MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);