Načítání e‑mailů ze serveru POP3

Uložit e‑maily na disk bez parsování

Pro stažení e‑mailových zpráv z POP3 serveru bez parsování můžete použít save_message metoda třídy Aspose.Email Pop3Client třída. Následující úryvek kódu ilustruje, jak uložit zprávu pomocí jejího pořadového čísla, v tomto případě čísla 1. save_message metoda zachovává původní formát EML bez parsování:

Parsovat zprávy před uložením

Můžete načíst konkrétní e‑mailovou zprávu pomocí fetch_message metoda třídy Pop3Client třída, která určuje požadované pořadové číslo pro objekt klienta. Následující ukázkový kód ukazuje, jak načíst konkrétní zprávu a poté ji uložit pomocí jejího předmětu jako názvu souboru voláním save metoda na objektu 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)

Filtrovat e‑maily ze serveru podle kritérií

Aspose.Email Pop3Client třída poskytuje list_messages() metoda, která získá všechny zprávy z poštovní schránky. Pro získání jen zpráv, které splňují určitou podmínku, použijte přetíženou list_messages(query) metoda, která přijímá MailQuery jako argument. MailQuery třída poskytuje různé vlastnosti pro specifikaci podmínek dotazu, například datum, předmět, odesílatele, příjemce atd.

Pro vytvoření vyhledávacího výrazu použijte MailQueryBuilder třída. Nejprve definujte všechny potřebné podmínky a omezení a poté naplňte objekt MailQuery dotazem vytvořeným pomocí MailQueryBuilder. Pop3Client využívá tento objekt MailQuery k načtení filtrovaných informací ze serveru.

Následující ukázkový kód demonstruje, jak filtrovat a načítat e‑maily z účtu Gmail na základě různých kritérií včetně předmětu, interního data, odesílatele a příjemce. Také ukazuje filtrování rozlišující velikost písmen a demonstruje, jak efektivně sestavovat složité dotazy.

  1. Navázat spojení s POP3 serverem Gmailu pomocí Pop3Client třída se zadanou adresou serveru, portem, uživatelským jménem a heslem. Bezpečnostní volby jsou nastaveny na AUTO pro zabezpečené připojení.
  2. Vytvořte instanci MailQueryBuilder k vytvoření kritérií vyhledávání pro filtrování e‑mailů.
  3. Filtrování podle předmětu:
    • E‑maily obsahující "Newsletter" v předmětu jsou zadány jako podmínka filtru.
  4. Filtrování podle interního data:
    • Je nastaven filtr pro e‑maily přijaté v aktuálním datu.
    • Je přidán další filtr pro načtení e‑mailů přijatých během posledního týdne.
  5. Filtrování podle odesílatele:
    • Filtry jsou použity k vyhledání e‑mailů od konkrétní e‑mailové adresy (saqib.razzaq@127.0.0.1) a zahrnutí e‑mailů z určité domény (SpecificHost.com).
  6. Filtrování podle příjemce:
    • Je zadán filtr pro nalezení e‑mailů odeslaných konkrétnímu příjemci.
  7. Kombinovat dotazy pomocí operátoru OR pro vyhledání e‑mailů, které buď odpovídají zadanému předmětu, nebo jsou odeslány z konkrétní adresy.
  8. Filtrování rozlišující velikost písmen:
    • Je zadán filtr rozlišující velikost písmen pro předmět obsahující "Newsletter" (označeno parametrem True).
  9. Vypsání zpráv:
    • Metoda list_messages() je volána s vytvořeným dotazem pro získání filtrovaných zpráv z poštovní schránky.
  10. Nakonec vypište počet filtrovaných zpráv.

Filtrovat e‑maily podle data

Pro získání zpráv podle data doručení použijte internal_date vlastnost, jak je ukázáno v následujícím ukázkovém kódu:

import aspose.email as ae
from datetime import datetime

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

Filtrovat e‑maily podle časového rozmezí

Pro získání zpráv v časovém rozmezí použijte stejný internal_date vlastnost určující časové období, jak je ukázáno v následujícím ukázkovém kódu:

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))

Filtrovat e‑maily podle odesílatele

Pro získání zpráv od konkrétního odesílatele použijte from_address vlastnost, jak je ukázáno v následujícím ukázkovém kódu:

import aspose.email as ae

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

Filtrovat e‑maily podle domény

Pro získání zpráv z konkrétní domény použijte from_address vlastnost, jak je ukázáno v následujícím ukázkovém kódu:

import aspose.email as ae

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

Filtrovat e‑maily podle příjemce

Pro získání zpráv pro konkrétního příjemce použijte to vlastnost, jak je ukázáno v následujícím ukázkovém kódu:

import aspose.email as ae

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

Vytvořte komplexní vyhledávací dotazy

Někdy je nutné vyhovět více než jednomu dotazu. Aspose.Email umožňuje kombinovat dotazy v několika prohlášeních. Vytvořte MailQueryBuilder objekt a použít jeho vlastnosti k vytvoření konkrétních dotazů.

Kombinovat dotazy pomocí AND

Následující úryvek kódu ukazuje, jak kombinovat dotazy pomocí operátoru 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")

Kombinovat dotazy pomocí OR

Následující úryvek kódu ukazuje, jak kombinovat dotazy pomocí operátoru OR:

import aspose.email as ae

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

Použít filtrování rozlišující velikost písmen

API také poskytuje možnost filtrovat e‑maily z poštovní schránky na základě kritéria rozlišujícího velikost písmen. Následující metody StringComparisonField třída poskytuje možnost vyhledávat e‑maily s určením příznaků rozlišujících velikost písmen:

Metoda Aspose.Email.StringComparisonField.contains(value, ignore_case) Metoda Aspose.Email.StringComparisonField.equals(value, ignore_case) Metoda Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Metoda Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Následující úryvek kódu ukazuje, jak implementovat tuto schopnost do vašeho projektu:

import aspose.email as ae

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