IMAP-E-Mails in Python suchen und filtern
Um alle Nachrichten aus einem Postfach abzurufen, stellt Aspose.Email die ’list_messages’-Methode des ImapClient Klasse. Um nur diejenigen Nachrichten abzurufen, die bestimmte Bedingungen erfüllen, können Sie die überladene ’list_messages’-Methode nutzen, die ein MailQuery als Argument. Die MailQuery Klasse bietet verschiedene Eigenschaften, um diese Bedingungen zu definieren, wie Datum, Betreff, Absender und Empfänger.
Das erste Codebeispiel zeigt, wie Nachrichten basierend auf Datum und Betreff gefiltert werden. Weitere Beispiele demonstrieren das Filtern nach anderen Kriterien und das Erstellen komplexerer Abfragen. Außerdem unterstützt die API die Unterscheidung von Groß‑ und Kleinschreibung bei Suchkriterien für präzises Filtern und ermöglicht das Angeben der Codierung des Suchstrings beim Filtern von Nachrichten aus dem Postfach.
Nachrichten vom IMAP-Server filtern und abrufen
Einfache IMAP-Abfrage erstellen
Verwenden Sie das folgende Codebeispiel, um sich mit einem IMAP-Postfach zu verbinden und Nachrichten abzurufen, die heute eingegangen sind und das Wort "newsletter" im Betreff enthalten.
- Stellen Sie eine Verbindung zum IMAP-Server über Port 993 mit Benutzername und Passwort her.
- Wählen Sie den Ordner "Inbox", um mit eingehenden E-Mails zu arbeiten.
- Erstellen Sie eine Instanz von ImapQueryBuilder um eine Suchabfrage zu erstellen.
- Geben Sie Suchkriterien an, z. B. dass der Betreff von E-Mails "Newsletter" enthalten soll und das interne Datum dem heutigen Datum entsprechen muss.
- Erzeugen Sie die Suchabfrage, indem Sie sie vom Builder abrufen.
- Verwenden Sie die Abfrage, um Nachrichten aufzulisten, die die Kriterien erfüllen.
- Geben Sie die Gesamtzahl der Nachrichten aus, die den Suchkriterien entsprechen.
Komplexe Suchkriterien erstellen
Aspose.Email ermöglicht es zudem, komplexe Suchkriterien zum Abfragen und Filtern von E-Mail-Nachrichten zu erstellen, etwa Lieferdatum, innerhalb eines Bereichs, bestimmter Absender, bestimmte Domain oder bestimmter Empfänger. Verwenden Sie hierfür die MailQueryBuilder Klasse und deren Eigenschaften. Die untenstehenden Codebeispiele zeigen Ihnen, wie Sie Nachrichten nach bestimmten Kriterien abrufen.
E-Mails nach heutigem Datum filtern
Um Nachrichten nach dem Lieferdatum abzurufen, verwenden Sie die ‘internal_date’-Eigenschaft des MailQueryBuilder Klasse, wie im folgenden Code‑Beispiel gezeigt:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
E-Mails nach Datumsbereich filtern
Um Nachrichten innerhalb eines Datumsbereichs abzurufen, verwenden Sie die gleiche ‘internal_date’-Eigenschaft und geben den Datumsbereich wie im nachfolgenden Codebeispiel an:
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 nach bestimmtem Absender filtern
Um Nachrichten von einem bestimmten Absender abzurufen, verwenden Sie die ‘from_address’-Eigenschaft des MailQueryBuilder Klasse, wie im folgenden Code‑Beispiel gezeigt:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
E-Mails nach spezifischer Domäne filtern
Um Nachrichten von einer bestimmten Domain abzurufen, verwenden Sie die ‘from_address’-Eigenschaft, wie im folgenden Codebeispiel gezeigt:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
E-Mails nach spezifischem Empfänger filtern
Um Nachrichten an einen bestimmten Empfänger abzurufen, verwenden Sie die ’to’-Eigenschaft, wie im nachfolgenden Codebeispiel gezeigt:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Nachrichten nach internem Datum filtern
Erstellen Sie eine Abfrage zu den angegebenen Bedingungen wie "internal date" und "subject contains". Das "internal date" bezieht sich auf das Datum und die Uhrzeit, zu denen eine E‑Mail-Nachricht empfangen oder dem E‑Mail-Server hinzugefügt wurde und kann über die ‘internal_date’-Eigenschaft des ImapQueryBuilder Klasse. Das nachstehende Codebeispiel zeigt, wie bestimmte E-Mails aus einem Posteingang basierend auf Betreff‑ und Datumskriterien abgerufen werden:
import aspose.email as ae
from datetime import datetime
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.select_folder("Inbox")
# Set conditions, Subject contains "Newsletter", Emails that arrived today
builder = ae.clients.imap.ImapQueryBuilder()
builder.subject.contains("Newsletter")
builder.internal_date.on(datetime.now())
# Build the query and Get list of messages
query = builder.get_query()
messages = client.list_messages(query)
for info in messages:
print(f"Internal Date: {info.internal_date}")
Nachrichten nach benutzerdefinierten Schlüsselwort‑Flags filtern
Erstellen Sie eine Abfrage, um ein IMAP-Postfach nach E-Mails zu durchsuchen, die benutzerdefinierte Schlüsselwort‑Flags enthalten, speziell "custom1" und "custom2". Um eine Abfrage zu erstellen, verwenden Sie die ImapQueryBuilder Klasse, die E-Mails beim Abruf von einem IMAP-Server filtert.
Beginnen Sie, indem Sie eine Instanz des Abfrage‑Builders erstellen. Verwenden Sie die has_flags Methode, Bedingungen hinzuzufügen, um nur jene E-Mails einzuschließen, die die angegebenen IMAP‑Schlüsselwort‑Flags tragen. Benutzerdefinierte Schlüsselwörter in IMAP, auch als benutzerdefinierte Flags bezeichnet, ermöglichen es Benutzern, E-Mails für verschiedene Zwecke zu kennzeichnen oder zu kategorisieren, z. B. den Status zu markieren.
Das folgende Codebeispiel illustriert, wie eine Abfrage erstellt wird, um E-Mails basierend auf benutzerdefinierten Schlüsselwort‑Flags abzurufen:
builder = ae.clients.imap.ImapQueryBuilder()
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom1"))
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom2"))
Komplexe Abfragen erstellen
Manchmal ist es erforderlich, mehr als eine Abfrage zu erfüllen. Aspose.Email ermöglicht dies durch das Kombinieren von Abfragen in mehreren Anweisungen. Erstellen Sie ein MailQueryBuilder Objekt und seine Eigenschaften verwenden, um spezifische Abfragen zu erstellen.
Abfragen mit AND kombinieren
Das folgende Code‑Snippet zeigt, wie man Abfragen mit AND kombiniert.
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")
Abfragen mit OR kombinieren
Das folgende Code‑Snippet zeigt, wie man Abfragen mit OR kombiniert.
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Anwenden von case‑sensitive Filtern
Die API bietet zudem die Möglichkeit, E‑Mails aus dem Postfach anhand einer case‑sensitiven Kriterien zu filtern. Die folgenden Methoden der StringComparisonField Klasse bietet die Möglichkeit, E‑Mails unter Angabe von Fall‑sensitiven Flags zu durchsuchen.
- StringComparisonField.contains(value, ignore_case)
- StringComparisonField.equals(value, ignore_case)
- StringComparisonField.not_contains(value, ignore_case)
- StringComparisonField.not_equals(value, ignore_case)
Das folgende Code‑Snippet zeigt, wie Sie diese Funktion in Ihr Projekt integrieren können:
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)
Benutzerdefinierte Suchabfragen ausführen
Erstellen Sie eine Suchabfrage für ein IMAP-Postfach, das E-Mails basierend auf einem benutzerdefinierten Gmail‑Suchkriterium filtert – konkret E-Mails mit Anhängen.
Beginnen Sie mit der Erstellung einer Instanz von ImapQueryBuilder, die beim Erstellen komplexer IMAP‑Suchabfragen hilft. Verwenden Sie die custom_search Methode, um einen Gmail‑spezifischen Suchstring zum Abfrage‑Builder hinzuzufügen.
Der Suchstring X-GM-RAW "has:attachment" nutzt das erweiterte IMAP-Attribut X-GM-RAW von Gmail und ermöglicht die Verwendung der leistungsstarken Gmail-Webmail‑Suchsyntax in IMAP‑Abfragen. Der Operator has:attachment gibt alle E-Mails mit Anhängen zurück.
Das folgende Codebeispiel zeigt, wie E-Mails gefiltert werden, um alle Nachrichten mit Anhängen zu erhalten:
builder = ae.clients.imap.ImapQueryBuilder()
builder.custom_search("X-GM-RAW \"has:attachment\"")
mailQuery = builder.get_query()
Diese Methode ermöglicht fortgeschrittenes Gmail‑spezifisches Filtern, um gezielte E-Mails abzurufen.