Работа с сообщениями от сервера
Получение информации о почтовом ящике
Мы можем получить информацию о почтовом ящике, такую как количество сообщений и размер почтового ящика, используя методы GetMailBoxSize и GetMailBoxInfo класса Pop3Client.
- Метод GetMailBoxSize возвращает размер почтового ящика в байтах.
- Метод GetMailBoxInfo возвращает объект типа Pop3MailBoxInfo.
Также можно получить количество сообщений с использованием свойства MessageCount и размер с помощью свойства OccupiedSize класса Pop3MailBoxInfo. Следующий пример кода показывает, как получить информацию о почтовом ящике. Он демонстрирует, как:
- Создать Pop3Client.
- Подключиться к POP3-серверу.
- Получить размер почтового ящика.
- Получить информацию о почтовом ящике.
- Получить количество сообщений в почтовом ящике.
- Получить занимаемый размер.
Получение количества электронных писем в почтовом ящике
Следующий фрагмент кода показывает, как подсчитать электронные сообщения в почтовом ящике.
Aspose.Email позволяет разработчикам работать с электронными письмами многими разными способами. Например, они могут получить информацию заголовка перед тем, как решить, загружать ли электронное письмо. Или они могут извлекать электронные письма с сервера и сохранять их без их разбора (быстрее) или после разбора (медленнее). Эта статья показывает, как извлекать и конвертировать электронные письма.
Извлечение информации заголовков электронных писем
Заголовки электронных писем могут дать нам информацию о сообщении, которую мы можем использовать, чтобы решить, извлекать полное сообщение или нет. Обычно информация заголовка включает отправителя, тему, дату получения и т.д. (Заголовки электронных писем описаны подробно в Настройка заголовков электронных писем. Эта тема относится непосредственно к отправке электронной почты с использованием SMTP, но информация о содержании заголовков электронной почты остается действительной для POP3-писем). Следующие примеры показывают, как извлекать заголовки электронных писем с POP3-сервера по номеру последовательности сообщения.
Извлечение электронных сообщений
Компонент класса Pop3Client предоставляет возможность извлекать электронные сообщения с POP3-сервера и анализировать их в экземпляр MailMessage с помощью компонентов MailMessage. Класс MailMessage содержит несколько свойств и методов для манипуляции содержимым электронной почты. Используя метод FetchMessage класса Pop3Client, вы можете получить экземпляр MailMessage непосредственно с POP3-сервера. Следующий фрагмент кода показывает, как извлечь полное сообщение электронной почты с POP3-сервера.
Извлечение информации о сводке сообщения с использованием уникального идентификатора
Клиент POP3 API может извлекать информацию о сводке сообщений с сервера, используя уникальный идентификатор сообщения. Это обеспечивает быстрый доступ к краткой информации о сообщении без предварительного извлечения полного сообщения с сервера. Следующий фрагмент кода показывает, как извлечь информацию о сводке сообщения.
Список сообщений с многосоединением
Pop3Client предоставляет свойство UseMultiConnection, которое можно использовать для создания нескольких соединений для тяжелых операций. Вы также можете установить количество соединений, которые будут использоваться в режиме многосоединения, с помощью Pop3Client.ConnectionsQuantity. Следующий фрагмент кода демонстрирует использование режима многосоединения для перечисления сообщений и сравнивает его производительность с режимом единого соединения.
Получение сообщений с сервера и сохранение на диске
Сохранить сообщение на диск без разбора
Если вы хотите загрузить электронные сообщения с POP3-сервера без их разбора, используйте функцию класса Pop3Client SaveMessage. Функция SaveMessage не разбирает сообщение электронной почты, поэтому она быстрее, чем функция FetchMessage. Следующий фрагмент кода показывает, как сохранить сообщение по его номеру последовательности. В этом случае метод SaveMessage сохраняет сообщение в исходном формате EML без разбора.
Разбор сообщения перед сохранением
Следующий фрагмент кода использует метод FetchMessage класса Pop3Client, чтобы извлечь сообщение с POP3-сервера по его номеру последовательности, затем сохранить сообщение на диск, используя тему в качестве имени файла.
Групповое получение сообщений
Pop3Client предоставляет метод FetchMessages, который принимает итератор номеров последовательности или уникальных идентификаторов и возвращает список MailMessage. Следующий фрагмент кода демонстрирует использование метода FetchMessages для извлечения сообщений по номерам последовательности и уникальным идентификаторам.
Фильтрация сообщений по отправителю, получателю или дате
Класс Pop3Client, описанный в Подключение к POP3-серверу, предоставляет метод ListMessages(), который получает все сообщения из почтового ящика. Чтобы получить только сообщения, соответствующие какому-либо условию, используйте перегруженный метод ListMessages(), который принимает в качестве аргумента MailQuery. Класс MailQuery предоставляет различные свойства для указания условий запроса, например, дата, тема, отправитель, получатель и так далее. Класс MailQueryBuilder используется для построения выражения поиска. Сначала устанавливаются все условия и ограничения, а затем MailQuery заполняется запросом, разработанным с помощью MailQueryBuilder. Объект класса MailQuery используется классом Pop3Client для извлечения отфильтрованной информации с сервера. Эта статья показывает, как фильтровать сообщения электронной почты из почтового ящика. Первый пример иллюстрирует, как фильтровать сообщения на основе даты и темы. Мы также показываем, как фильтровать по другим критериям и как строить более сложные запросы. Также демонстрируется применение фильтрации по дате и времени для извлечения конкретных писем из почтового ящика. Кроме того, также показано, как применять чувствительную к регистру фильтрацию.
Фильтрация сообщений из почтового ящика
Чтобы отфильтровать сообщения из почтового ящика:
- Подключитесь и войдите в POP3-сервер.
- Создайте экземпляр MailQuery и установите нужные свойства.
- Вызовите метод
Pop3Client.ListMessages(MailQuery query)
и передайте MailQuery в параметры, чтобы получить только отфильтрованные сообщения.
Следующий фрагмент кода показывает, как подключиться к POP3 почтовому ящику и получить сообщения, которые прибыли сегодня и имеют слово “newsletter” в теме.
Получение сообщений, соответствующих определенным критериям
Примеры кода выше показывают, как можно фильтровать сообщения на основе темы электронного письма и даты. Мы можем использовать другие свойства, чтобы установить и другие поддерживаемые условия. Ниже приведены некоторые примеры установки условий с помощью MailQuery.
Следующие фрагменты кода показывают, как фильтровать электронные письма по другим критериям:
- Найти электронные письма, доставленные сегодня.
- Найти электронные письма, полученные в диапазоне.
- Найти электронные письма от конкретного отправителя.
- Найти электронные письма, отправленные с конкретного домена.
- Найти электронные письма, отправленные конкретному получателю.
Сегодняшняя дата
Следующий фрагмент кода показывает, как найти электронные письма, доставленные сегодня.
Диапазон дат
Следующий фрагмент кода показывает, как найти электронные письма, полученные в диапазоне.
Конкретный отправитель
Следующий фрагмент кода показывает, как найти электронные письма от конкретного отправителя.
Конкретный домен
Следующий фрагмент кода показывает, как найти электронные письма, отправленные с конкретного домена.
Конкретный получатель
Следующий фрагмент кода показывает, как найти электронные письма, отправленные конкретному получателю.
Строительство сложных запросов
Если различные свойства MailQueryBuilder установлены в отдельных операторов, то все условия будут совпадать. Например, если мы хотим получить сообщения между диапазоном дат и из конкретного хоста, нам нужно написать три оператора.
Объединение запросов с помощью AND
Следующий фрагмент кода показывает, как объединить запросы с помощью AND.
Объединение запросов с помощью OR
MailQueryBuilder предоставляет метод Or(), который принимает два экземпляра MailQuery в качестве параметров. Он получает сообщения, которые соответствуют любому из двух заданных условий. Следующий фрагмент кода показывает, как фильтровать сообщения, которые либо имеют “test” в теме, либо “noreply@host.com” в качестве отправителя. Следующий фрагмент кода показывает, как объединить запросы с помощью OR.
Применение чувствительных к регистру фильтров
API также предоставляет возможность фильтровать электронные письма из почтового ящика на основе критерия, чувствительного к регистру. Следующие методы обеспечивают возможность поиска электронных писем, указывая флаг чувствительности к регистру.
- Метод
Aspose.Email.StringComparisonField.Contains(string value, bool ignoreCase)
- Метод
Aspose.Email.StringComparisonField.Equals(string value, bool ignoreCase)
- Метод
Aspose.Email.StringComparisonField.NotContains(string value, bool ignoreCase)
- Метод
Aspose.Email.StringComparisonField.NotEquals(string value, bool ignoreCase)