Hämtning av e‑post från POP3‑server
Spara e‑post till disk utan parsing
För att ladda ner e‑postmeddelanden från en POP3‑server utan att parsea dem, kan du använda save_message metod i Aspose.Email Pop3Client klass. Följande kodsnutt illustrerar hur man sparar ett meddelande med dess sekvensnummer, i detta fall nummer 1. save_message metod bevarar original‑EML‑formatet utan att parsea:
Parsea meddelanden innan sparande
Du kan hämta ett specifikt e‑postmeddelande genom att använda fetch_message metod för Pop3Client klass, som specificerar önskat sekvensnummer för klientobjektet. Följande kodexempel visar hur man hämtar ett specifikt meddelande och sedan sparar det med dess ämne som filnamn genom att anropa save metod på msg‑objektet:
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)
Filtrera e‑post från servern efter kriterier
Aspose.Email Pop3Client klass tillhandahåller list_messages() metod som hämtar alla meddelanden från en brevlåda. För att bara få meddelanden som matchar ett villkor, använd den överlagrade list_messages(query) metod som tar MailQuery som argument. MailQuery klass erbjuder olika egenskaper för att specificera frågevillkoren, t.ex. datum, ämne, avsändare, mottagare med mera.
För att bygga sökuttrycket, använd MailQueryBuilder klass. Definiera först alla nödvändiga villkor och begränsningar, och fyll sedan MailQuery‑objektet med frågan som skapats av MailQueryBuilder. Pop3Client använder detta MailQuery-objekt för att hämta filtrerad information från servern.
Följande kodexempel demonstrerar hur man filtrerar och hämtar e‑post från ett Gmail‑konto baserat på olika kriterier inklusive ämne, internt datum, avsändare och mottagare. Det visar även skiftlägeskänslig filtrering och hur man bygger komplexa frågor på ett effektivt sätt.
- Upprätta en anslutning till Gmail POP3‑servern med hjälp av Pop3Client klass med angiven serveradress, port, användarnamn och lösenord. Säkerhetsalternativen är satta till AUTO för säker anslutning.
- Skapa en instans av MailQueryBuilder för att konstruera sökkriterierna för filtrering av e‑post.
- Filtrering efter Ämne:
- E‑post som innehåller "Newsletter" i ämnesraden specificeras som ett filtervillkor.
- Filtrering efter Internt datum:
- Ett filter har ställts in för e‑post mottagen på det aktuella datumet.
- Ett extra filter läggs till för att hämta e‑post som mottagits under den senaste veckan.
- Filtrering efter Avsändare:
- Filter tillämpas för att söka efter e‑post från en specifik e‑postadress (saqib.razzaq@127.0.0.1) och för att inkludera e‑post från en viss domän (SpecificHost.com).
- Filtrering efter Mottagare:
- Ett filter har specificerats för att hitta e‑post som skickats till en specifik mottagare.
- Kombinera frågor med OR‑operatorn för att söka e‑post som antingen matchar ett givet ämne eller skickas från en specifik adress.
- Skiftlägeskänslig filtrering:
- Ett skiftlägeskänsligt filter för ämnet som innehåller "Newsletter" specificeras (ange med parametern True).
- Listar meddelanden:
- Metoden list_messages() anropas med den konstruerade frågan för att hämta de filtrerade meddelandena från brevlådan.
- Till sist, skriv ut antalet filtrerade meddelanden.
Filtrera e-post efter datum
För att hämta meddelanden efter leveransdatum, använd internal_date egenskap som visas i kodexemplet nedan:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Filtrera e-post efter datumintervall
För att hämta meddelanden inom ett datumintervall, använd samma internal_date egenskap som specificerar datumintervallet som visas i kodexemplet nedan:
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))
Filtrera e-post efter avsändare
För att hämta meddelanden från en specifik avsändare, använd from_address egenskap som visas i kodexemplet nedan:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Filtrera e-post efter domän
För att hämta meddelanden från en specifik domän, använd from_address egenskap som visas i kodexemplet nedan:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Filtrera e-post efter mottagare
För att hämta meddelanden till en specifik mottagare, använd to egenskap som visas i kodexemplet nedan:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Bygg komplexa sökfrågor
Ibland är det nödvändigt att tillfredsställa mer än en fråga. Aspose.Email gör det möjligt att kombinera frågor i flera uttalanden. Skapa en MailQueryBuilder objektet och använder dess egenskaper för att bygga specifika frågor.
Kombinera frågor med AND
Följande kodsnutt visar hur du kombinerar frågor med AND‑operatorn:
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")
Kombinera frågor med OR
Följande kodsnutt visar hur du kombinerar frågor med OR‑operatorn:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Applicera skiftlägeskänsliga filter
API:et ger också möjligheten att filtrera e‑post från brevlådan baserat på skiftlägeskänsliga kriterier. Följande metoder i StringComparisonField klass ger möjlighet att söka e‑post med skiftlägeskänsliga flaggor:
Metod Aspose.Email.StringComparisonField.contains(värde, ignore_case) Metod Aspose.Email.StringComparisonField.equals(värde, ignore_case) Metod Aspose.Email.StringComparisonField.not_contains(värde, ignore_case) Metod Aspose.Email.StringComparisonField.not_equals(värde, ignore_case)
Följande kodsnutt visar hur du implementerar denna funktion i ditt projekt:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)