Отримання електронних листів з POP3 сервера

Зберегти листи на диск без розбору

Щоб завантажити листи з POP3 сервера без розбору, ви можете використати save_message метод Aspose.Email Pop3Client клас. Нижче наведено фрагмент коду, який ілюструє, як зберегти лист, використовуючи його порядковий номер, в даному випадку номер 1. The save_message метод зберігає оригінальний формат EML без розбору:

Розбирати листи перед збереженням

Ви можете отримати конкретний електронний лист, використовуючи fetch_message метод Pop3Client клас, вказуючи потрібний порядковий номер для об’єкта клієнта. Наведений нижче зразок коду показує, як отримати певне повідомлення, а потім зберегти його, використовуючи тему як ім’я файлу, викликавши save метод об’єкта msg:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

Фільтрування листів з сервера за критеріями

Aspose.Email Pop3Client class надає list_messages() метод, який отримує всі повідомлення зі скриньки. Щоб отримати лише повідомлення, що відповідають певній умові, використовуйте перевантажений list_messages(query) метод, який приймає MailQuery як аргумент. MailQuery клас надає різні властивості для зазначення умов запиту, наприклад, дата, тема, відправник, одержувач тощо.

Щоб створити вираз пошуку, використайте MailQueryBuilder клас. Спочатку визначте всі необхідні умови та обмеження, а потім заповніть об’єкт MailQuery запитом, створеним MailQueryBuilder. Pop3Client використовує цей об’єкт MailQuery для отримання відфільтрованої інформації з сервера.

Нижче наведено зразок коду, який демонструє, як фільтрувати та отримувати листи з облікового запису Gmail за різними критеріями, включаючи тему, внутрішню дату, відправника та одержувача. Також показано чутливе до регістру фільтрування та демонстровано ефективне створення складних запитів.

  1. Встановіть з’єднання з POP3 сервером Gmail за допомогою Pop3Client клас з вказаною адресою сервера, портом, ім’ям користувача та паролем. Параметри безпеки встановлені в AUTO для безпечного з’єднання.
  2. Створіть екземпляр MailQueryBuilder для побудови критеріїв пошуку фільтрації листів.
  3. Фільтрація за темою:
    • Листи, що містять "Newsletter" у темі, вказані як умова фільтру.
  4. Фільтрація за внутрішньою датою:
    • Встановлено фільтр для листів, отриманих у поточну дату.
    • Додано додатковий фільтр для отримання листів, отриманих протягом останнього тижня.
  5. Фільтрація за відправником:
    • Застосовано фільтри для пошуку листів з певної електронної адреси (saqib.razzaq@127.0.0.1) та включення листів з певного домену (SpecificHost.com).
  6. Фільтрація за одержувачем:
    • Вказано фільтр для пошуку листів, надісланих конкретному одержувачу.
  7. Комбінувати запити за допомогою оператора OR, щоб шукати листи, які або відповідають заданій темі, або надіслані з певної адреси.
  8. Чутливе до регістру фільтрування:
    • Вказано чутливий до регістру фільтр для теми, що містить "Newsletter" (означений параметром True).
  9. Перерахунок повідомлень:
    • Метод list_messages() викликається з побудованим запитом для отримання відфільтрованих листів з скрині.
  10. Нарешті виведіть кількість відфільтрованих повідомлень.

Фільтруйте електронні листи за датою

Щоб отримати повідомлення за датою доставки, використайте internal_date властивість, як показано у прикладі коду нижче:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Фільтруйте електронні листи за діапазоном дат

Щоб отримати повідомлення в межах діапазону дат, використайте той самий internal_date властивість, що вказує діапазон дат, як показано у прикладі коду нижче:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

Фільтруйте електронні листи за відправником

Щоб отримати повідомлення від конкретного відправника, використайте from_address властивість, як показано у прикладі коду нижче:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Фільтруйте електронні листи за доменом

Щоб отримати повідомлення з конкретного домену, використайте from_address властивість, як показано у прикладі коду нижче:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Фільтруйте електронні листи за одержувачем

Щоб отримати повідомлення для конкретного одержувача, використайте to властивість, як показано у прикладі коду нижче:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Створюйте складні запити пошуку

Іноді необхідно задовольнити більше ніж один запит. Aspose.Email дозволяє комбінувати запити в декілька виразів. Створіть MailQueryBuilder об’єкт і використати його властивості для побудови конкретних запитів.

Комбінувати запити за AND

Нижче наведено фрагмент коду, який показує, як комбінувати запити оператором AND:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

Комбінувати запити за OR

Нижче наведено фрагмент коду, який показує, як комбінувати запити оператором OR:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

Застосовувати чутливі до регістру фільтри

API також забезпечує можливість фільтрування листів у скринці за чутливим до регістру критерієм. Наступні методи StringComparisonField клас забезпечує можливість пошуку листів з вказанням прапорців чутливості до регістру:

Метод Aspose.Email.StringComparisonField.contains(value, ignore_case) Метод Aspose.Email.StringComparisonField.equals(value, ignore_case) Метод Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Метод Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Нижче наведено фрагмент коду, який показує, як впровадити цю можливість у ваш проект:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)