E-mails ophalen van POP3-server

E-mails opslaan op schijf zonder parsing

Om e‑mailberichten van een POP3‑server te downloaden zonder parsing, kun je de save_message methode van de Aspose.Email Pop3Client klasse. Het volgende codefragment illustreert hoe je een bericht opslaat met behulp van zijn volgnummer, in dit geval nummer 1. De save_message methode behoudt het oorspronkelijke EML‑formaat zonder parsing:

Berichten parseren vóór opslaan

Je kunt een specifiek e‑mailbericht ophalen met behulp van de fetch_message methode van de Pop3Client klasse, waarin het gewenste volgnummer voor het client‑object wordt gespecificeerd. Het volgende codevoorbeeld toont hoe je een bepaald bericht ophaalt en vervolgens opslaat met zijn onderwerp als bestandsnaam door de save methode op het msg‑object:

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)

E‑mails filteren van server op criteria

De Aspose.Email Pop3Client class biedt de list_messages() methode die alle berichten uit een mailbox haalt. Om alleen berichten te krijgen die aan een bepaalde voorwaarde voldoen, gebruik de overladen list_messages(query) methode die neemt MailQuery als argument. De MailQuery klasse biedt verschillende eigenschappen om de query‑voorwaarden op te geven, bijvoorbeeld datum, onderwerp, afzender, ontvanger enzovoort.

Gebruik de MailQueryBuilder klasse. Definieer eerst alle benodigde voorwaarden en beperkingen en vul vervolgens het MailQuery‑object met de query die door de MailQueryBuilder. Pop3Client maakt gebruik van dit MailQuery‑object om gefilterde informatie van de server op te halen.

Het volgende codevoorbeeld laat zien hoe je e‑mails van een Gmail‑account filtert en ophaalt op basis van verschillende criteria, waaronder onderwerp, interne datum, afzender en ontvanger. Het toont tevens hoofdlettergevoelige filtering en demonstreert hoe je efficiënt complexe queries kunt opbouwen.

  1. Maak een verbinding met de Gmail POP3-server met behulp van de Pop3Client klasse met het opgegeven serveradres, poort, gebruikersnaam en wachtwoord. Beveiligingsopties zijn ingesteld op AUTO voor een veilige verbinding.
  2. Maak een instantie van de MailQueryBuilder om de zoekcriteria voor het filteren van e‑mails op te stellen.
  3. Filteren op Onderwerp:
    • E‑mails met "Newsletter" in de onderwerpregel worden gespecificeerd als filterconditie.
  4. Filteren op Interne datum:
    • Er wordt een filter ingesteld voor e‑mails die op de huidige datum zijn ontvangen.
    • Er wordt een extra filter toegevoegd om e‑mails op te halen die binnen de laatste week zijn ontvangen.
  5. Filteren op Afzender:
    • Filters worden toegepast om te zoeken naar e‑mails van een specifiek e‑mailadres (saqib.razzaq@127.0.0.1) en om e‑mails van een bepaald domein (SpecificHost.com) op te nemen.
  6. Filteren op Ontvanger:
    • Er wordt een filter gespecificeerd om e‑mails te vinden die naar een specifieke ontvanger zijn gestuurd.
  7. Queries combineren met de OR‑operator om te zoeken naar e‑mails die ofwel een bepaald onderwerp hebben of van een specifiek adres zijn verzonden.
  8. Hoofdlettergevoelige filtering:
    • Een hoofdlettergevoelig filter voor het onderwerp dat "Newsletter" bevat, wordt gespecificeerd (aangegeven door de True‑parameter).
  9. Berichten weergeven:
    • De list_messages() methode wordt aangeroepen met de geconstrueerde query om de gefilterde berichten uit de mailbox op te halen.
  10. Print ten slotte het aantal gefilterde berichten.

E‑mails filteren op datum

Om berichten op afleverdatum op te halen, gebruik de internal_date eigenschap zoals getoond in het onderstaande code‑voorbeeld:

import aspose.email as ae
from datetime import datetime

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

E‑mails filteren op datumbereik

Om berichten binnen een datumbereik op te halen, gebruik dezelfde internal_date eigenschap die het datumbereik specificeert zoals getoond in het onderstaande code‑voorbeeld:

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

E‑mails filteren op afzender

Om berichten van een specifieke afzender op te halen, gebruik de from_address eigenschap zoals getoond in het onderstaande code‑voorbeeld:

import aspose.email as ae

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

E‑mails filteren op domein

Om berichten van een specifiek domein op te halen, gebruik de from_address eigenschap zoals getoond in het onderstaande code‑voorbeeld:

import aspose.email as ae

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

E‑mails filteren op ontvanger

Om berichten naar een specifieke ontvanger op te halen, gebruik de to eigenschap zoals getoond in het onderstaande code‑voorbeeld:

import aspose.email as ae

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

Complexe zoekquery’s bouwen

Soms is het nodig om meer dan één query te voldoen. Aspose.Email maakt het mogelijk om queries te combineren in verschillende statements. Maak een MailQueryBuilder object en zijn eigenschappen gebruiken om specifieke queries op te bouwen.

Queries combineren met AND

Het volgende codefragment laat zien hoe je queries combineert met de AND‑operator:

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

Queries combineren met OR

Het volgende codefragment laat zien hoe je queries combineert met de OR‑operator:

import aspose.email as ae

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

Hoofdlettergevoelige filters toepassen

De API biedt ook de mogelijkheid om e‑mails uit de mailbox te filteren op basis van een hoofdlettergevoelige criteria. De volgende methoden van de StringComparisonField klasse bieden de mogelijkheid om e‑mails te zoeken met hoofdlettergevoelige vlaggen:

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

Het volgende codefragment laat zien hoe je deze functionaliteit in je project implementeert:

import aspose.email as ae

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