Извличане на имейли от POP3 сървър
Записване на имейли на диск без парсиране
За да изтеглите имейл съобщения от POP3 сървър без парсиране, можете да използвате save_message метод на Aspose.Email Pop3Client клас. Следният кодов фрагмент илюстрира как да запазите съобщение, използвайки неговия последователен номер, в този случай номер 1. 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 клас предоставя list_messages() метод, който получава всички съобщения от пощенска кутия. За да получите само съобщения, отговарящи на някои условия, използвайте претоварения list_messages(query) метод, който приема MailQuery като аргумент. MailQuery клас предоставя различни свойства за задаване на условията на заявката, например дата, тема, подател, получател и т.н.
За да изградите израза за търсене, използвайте MailQueryBuilder клас. Първо дефинирайте всички необходими условия и ограничения, след което попълнете MailQuery обекта със заявката, създадена от MailQueryBuilder. Pop3Client използва този MailQuery обект, за да извлече филтрираната информация от сървъра.
Следният примерен код демонстрира как да се филтрират и извличат имейли от Gmail акаунт въз основа на различни критерии, включително тема, вътрешна дата, подател и получател. Той също така показва чувствително към регистъра филтриране и демонстрира ефективно изграждане на сложни заявки.
- Установете връзка с POP3 сървъра на Gmail, използвайки Pop3Client клас с посочения адрес на сървъра, порт, потребителско име и парола. Секюрити опциите са зададени на AUTO за сигурна връзка.
- Създайте инстанция на MailQueryBuilder за създаване на критерии за търсене при филтриране на имейли.
- Филтриране по Тема:
- Имейлите, съдържащи "Newsletter" в темата, са зададени като условие за филтър.
- Филтриране по Вътрешна дата:
- Зададен е филтър за имейли, получени на текущата дата.
- Добавен е допълнителен филтър за извличане на имейли, получени през последната седмица.
- Филтриране по Подател:
- Филтри се прилагат за търсене на имейли от конкретен имейл адрес (saqib.razzaq@127.0.0.1) и за включване на имейли от определен домейн (SpecificHost.com).
- Филтриране по Получател:
- Определен е филтър за намиране на имейли, изпратени до конкретен получател.
- Комбиниране на заявки използвайки оператора OR, за да се търсят имейли, които съвпадат дадена тема или са изпратени от конкретен адрес.
- Чувствително към регистъра филтриране:
- Определен е чувствителен към регистъра филтър за темата, съдържащ "Newsletter" (отбелязано с параметъра True).
- Списък на съобщенията:
- Методът list_messages() се извиква с конструираната заявка, за да се извлекат филтрираните съобщения от пощенската кутия.
- Накрая отпечатайте броя на филтрираните съобщения.
Филтриране на имейли по дата
За извличане на съобщения по дата на доставка, използвайте 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)