Werken met berichten van server
Mailboxinformatie ophalen
We kunnen informatie over de mailbox verkrijgen, zoals het aantal berichten en de grootte van de mailbox, met behulp van de GetMailBoxSize() en GetMailBoxInfo() methoden.
- De GetMailBoxSize() methode retourneert de grootte van de mailbox in bytes.
- De GetMailBoxInfo() methode retourneert een object van het type Pop3MailBoxInfo.
Het is ook mogelijk het aantal berichten op te halen met de MessageCount-eigenschap en de grootte met de OccupiedSize-eigenschap. De volgende voorbeeldcode toont hoe je informatie over de mailbox kunt krijgen. Het laat zien hoe je:
- Maak een Pop3Client.
- Maak verbinding met een POP3-server.
- Haal de grootte van de mailbox op.
- Haal mailboxinformatie op.
- Haal het aantal berichten in de mailbox op.
- Haal de bezette grootte op.
E-mailtelling in de mailbox ophalen
De volgende codefragment toont hoe je het aantal e-mailberichten in een mailbox telt.
Aspose.Email stelt ontwikkelaars in staat om op vele manieren met e-mails te werken. Ze kunnen bijvoorbeeld headerinformatie ophalen voordat ze beslissen een e-mail te downloaden. Of ze kunnen e-mails van een server ophalen en opslaan zonder ze te parseren (sneller) of na het parseren (langzamer). Dit artikel laat zien hoe e-mails opgehaald en geconverteerd kunnen worden.
Informatie over e-mailheaders ophalen
E-mailheaders kunnen ons informatie verschaffen over een e-mailbericht die we kunnen gebruiken om te bepalen of we het volledige bericht moeten ophalen. Meestal bevat de header informatie zoals afzender, onderwerp, ontvangstdatum etc. (E-mailheaders worden uitvoerig beschreven in Aangepaste e-mailheaders. Dat onderwerp gaat specifiek over het verzenden van e-mail met SMTP, maar de informatie over e-mailheaderinhoud blijft gelden voor POP3-e-mails). De volgende voorbeelden laten zien hoe je e-mailheaders van een POP3-server kunt ophalen met behulp van het volgnummer van het bericht.
E-mailberichten ophalen
De Aspose.Email.Pop3 klassecomponent biedt de mogelijkheid om e-mailberichten van de POP3-server op te halen en ze te parseren naar een MailMessage‑instantie met behulp van MailMessage‑componenten. De MailMessage‑klasse bevat verschillende eigenschappen en methoden voor het manipuleren van e-mailinhoud. Door de FetchMessage‑functie van de Pop3Client‑klasse te gebruiken, kun je direct een MailMessage‑instantie van de POP3-server krijgen. Het volgende codefragment laat zien hoe je een volledig e-mailbericht van de POP3-server ophaalt.
Bericht‑samenvatting ophalen met unieke ID
De POP3‑client van de API kan samenvattende berichtinformatie van de server ophalen met behulp van de unieke id van het bericht. Dit biedt snelle toegang tot de korte informatie van het bericht zonder eerst het volledige bericht van de server op te halen. Het volgende codefragment laat zien hoe je berichtsamenvatting kunt ophalen.
Berichten weergeven met MultiConnection
Voor zwaarbelaste bewerkingen biedt Aspose.Email de ‘use_multi_connection’ eigenschap van de Pop3Client klasse om meerdere verbindingen te gebruiken tijdens het ophalen van e-mails. Het gebruik van deze modus leidt echter niet per se tot een prestatieverbetering. Het volgende codefragment laat zien hoe je een verbinding maakt met een POP3-server, de client configureert om tot 5 gelijktijdige verbindingen toe te staan en de multi‑verbinding modus inschakelt om informatie over de op de server aanwezige berichten op te halen:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()
Berichten ophalen van server en opslaan op schijf
Bericht opslaan op schijf zonder te parseren
Als je e-mailberichten van de POP3-server wilt downloaden zonder ze te parseren, gebruik dan de SaveMessage‑functie van de Pop3Client‑klasse. De SaveMessage‑functie parseert het e‑mailbericht niet, waardoor hij sneller is dan de FetchMessage‑functie. Het volgende codefragment laat zien hoe je een bericht opslaat via het volgnummer, in dit geval nummer 1. De SaveMessage‑methode slaat het bericht op in het oorspronkelijke EML‑formaat zonder het te parseren.
Bericht parseren vóór opslaan
Gebruik de ‘fetch_message’ methode van het client‑object gemaakt met Pop3Client klasse om het bericht met een specifiek volgnummer op te halen. Het onderstaande codevoorbeeld toont hoe je een specifiek bericht ophaalt en opslaat met zijn onderwerp als bestandsnaam door de ‘save’ methode op het msg‑object aan te roepen:
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)
Berichten filteren op afzender, ontvanger of datum
De Pop3Client‑klasse, beschreven in Verbinden met een POP3‑server, biedt de list_messages() methode die alle berichten uit een mailbox haalt. Om alleen berichten te krijgen die aan bepaalde voorwaarden voldoen, gebruik je de overladen ListMessages() methode die een MailQuery als argument neemt. De MailQuery‑klasse biedt verschillende eigenschappen om de query‑voorwaarden te specificeren, bijvoorbeeld datum, onderwerp, afzender, ontvanger enzovoort. De MailQueryBuilder‑klasse wordt gebruikt om de zoekexpressie op te bouwen. Eerst worden alle voorwaarden en beperkingen ingesteld en daarna wordt de MailQuery gevuld met de query die door MailQueryBuilder is ontwikkeld. Het MailQuery‑object wordt door Pop3Client gebruikt om de gefilterde informatie van de server te extraheren. Dit artikel toont hoe je e‑mailberichten uit een mailbox kunt filteren. Het eerste voorbeeld laat zien hoe je berichten filtert op datum en onderwerp. We laten ook zien hoe je op andere criteria filtert en hoe je complexere queries opbouwt. Het toont ook het gebruik van datum‑ en tijdfilters om specifieke e‑mails uit de mailbox op te halen. Bovendien wordt getoond hoe je hoofdlettergevoelige filtering toepast.
Berichten uit mailbox filteren
Om berichten uit een mailbox te filteren:
- Verbinden en inloggen op een POP3-server.
- Maak een instantie van MailQuery aan en stel de gewenste eigenschappen in.
- Roep de Pop3Client.list_messages(MailQuery query) methode aan en geef de MailQuery mee als parameter om alleen de gefilterde berichten te krijgen.
Het volgende codefragment laat zien hoe je verbinding maakt met een POP3-mailbox en berichten ophaalt die vandaag zijn aangekomen en het woord "newsletter" in het onderwerp hebben.
Berichten ophalen die aan specifieke criteria voldoen
Aspose.Email maakt ook mogelijk om complexe zoekcriteria te bouwen voor het bevragen en filteren van e‑mailberichten. Gebruik hiervoor de MailQueryBuilder klasse en zijn eigenschappen. De criteria voor het ophalen zijn als volgt:
- Berichten ophalen op afleverdatum.
- Berichten ophalen binnen een bereik.
- Berichten ophalen van een specifieke afzender.
- Berichten ophalen van een specifiek domein.
- Berichten ophalen naar een specifieke ontvanger.
Huidige datum
Om berichten op afleverdatum op te halen, gebruik je de ‘internal_date’ eigenschap zoals weergegeven in het onderstaande codevoorbeeld:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Datumbereik
Om berichten binnen een datumbereik op te halen, gebruik je dezelfde ‘internal_date’ eigenschap en specificeer je het datumbereik zoals getoond in het onderstaande codevoorbeeld:
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))
Specifieke afzender
Om berichten van een specifieke afzender op te halen, gebruik je de ‘from_address’ eigenschap zoals weergegeven in het onderstaande codevoorbeeld:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Specifiek domein
Om berichten van een specifiek domein op te halen, gebruik je de ‘from_address’ eigenschap zoals weergegeven in het onderstaande codevoorbeeld:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Specifieke ontvanger
Om berichten naar een specifieke ontvanger op te halen, gebruik je de ’to’ eigenschap zoals weergegeven in het onderstaande codevoorbeeld:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Complexe queries bouwen
Soms is het nodig om aan meer dan één query te voldoen. Aspose.Email maakt dit mogelijk door 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 toont hoe je queries combineert met 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")
Queries combineren met OR
Het volgende codefragment laat zien hoe je queries combineert met OR.
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 biedt 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)