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.

  1. 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.
  2. Skapa en instans av MailQueryBuilder för att konstruera sökkriterierna för filtrering av e‑post.
  3. Filtrering efter Ämne:
    • E‑post som innehåller "Newsletter" i ämnesraden specificeras som ett filtervillkor.
  4. 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.
  5. 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).
  6. Filtrering efter Mottagare:
    • Ett filter har specificerats för att hitta e‑post som skickats till en specifik mottagare.
  7. 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.
  8. Skiftlägeskänslig filtrering:
    • Ett skiftlägeskänsligt filter för ämnet som innehåller "Newsletter" specificeras (ange med parametern True).
  9. Listar meddelanden:
    • Metoden list_messages() anropas med den konstruerade frågan för att hämta de filtrerade meddelandena från brevlådan.
  10. 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)