IMAP‑E‑Mail‑Filterung – Methoden, Kriterien & Code‑Beispiele
Grundlegende Nachrichtenfilterung
Die ImapClient class provides the ListMessages() Methode, die alle Nachrichten aus einem Postfach holt. Um nur Nachrichten zu erhalten, die einer Bedingung entsprechen, verwende die überladene ListMessages() Methode, die nimmt MailQuery als Argument. Die MailQuery Klasse bietet verschiedene Eigenschaften zur Angabe von Bedingungen, z. B. Datum, Betreff, Absender, Empfänger usw. Das erste Beispiel zeigt, wie man Nachrichten nach Datum und Betreff filtert. Wir zeigen außerdem, wie man nach anderen Kriterien filtert und komplexere Abfragen erstellt. Die API bietet zudem die Möglichkeit, fallabhängige Suchkriterien anzuwenden, um exakte Filterkriterien zu treffen. Die API ermöglicht außerdem die Angabe der Kodierung des Suchstrings für das Filtern von Nachrichten aus dem Postfach.
Nachrichten aus dem Postfach filtern
- Verbinden und anmelden an einem IMAP‑Server
- Erstellen Sie eine Instanz von dem MailQuery und setzen Sie die Eigenschaften
- Rufen Sie die ImapClient.ListMessages(MailQuery query) Methode und übergeben Sie die MailQuery mit den Parametern, um nur gefilterte Nachrichten zu erhalten.
Das folgende Code‑Snippet zeigt, wie man eine Verbindung zu einem IMAP‑Postfach herstellt und Nachrichten abruft, die heute eingetroffen sind und das Wort "newsletter" im Betreff enthalten.
Nachrichten nach spezifischen Kriterien filtern
Die obigen Code‑Beispiele filtert Nachrichten basierend auf Betreff und Datum der E‑Mail. Wir können weitere Eigenschaften nutzen, um weitere unterstützte Bedingungen zu setzen. Nachfolgend einige Beispiele zum Setzen der Bedingungen mit MailQuery. Die folgenden Code‑Snippets zeigen, wie man E‑Mails filtert nach:
- Heutiges Datum.
- Ein Datumsbereich.
- Von einem bestimmten Absender.
- Von einer bestimmten Domäne.
- Von einem bestimmten Empfänger.
Heutiges Datum
Das folgende Code‑Snippet zeigt, wie man E‑Mails nach dem heutigen Datum filtert.
Datumsbereich
Das folgende Code‑Snippet zeigt, wie man E‑Mails nach Datumsbereich filtert.
Bestimmter Absender
Das folgende Code‑Snippet zeigt, wie man E‑Mails nach einem bestimmten Absender filtert.
Bestimmte Domäne
Das folgende Code‑Snippet zeigt, wie man E‑Mails nach einer bestimmten Domäne filtert.
Bestimmter Empfänger
Das folgende Code‑Snippet zeigt, wie man E‑Mails nach einem bestimmten Empfänger filtert.
Erweiterte Abfrageerstellung
Falls unterschiedlich MailQueryBuilder Eigenschaften werden in separaten Anweisungen gesetzt, dann würden alle Bedingungen erfüllt. Zum Beispiel, wenn wir Nachrichten zwischen einem Datumsbereich und von einem bestimmten Host erhalten wollen, müssen wir drei Anweisungen schreiben.
Abfragen mit AND kombinieren
Das folgende Code‑Snippet zeigt, wie man Abfragen mit AND kombiniert.
Abfragen mit OR kombinieren
MailQueryBuilder stellt die Or() Methode, die zwei MailQuery Instanzen als Parameter. Es ruft die Nachrichten ab, die einer der beiden angegebenen Bedingungen entsprechen. Das folgende Code‑Snippet zeigt, wie man Nachrichten filtert, die entweder „test“ im Betreff haben oder „noreply@host.com“ als Absender. Das folgende Code‑Snippet zeigt, wie man Abfragen mit OR kombiniert.
Filterung basierend auf InternalDate
Nachrichten können vom Server basierend auf dem InternalDate extrahiert werden, jedoch gibt der Server manchmal nicht alle Nachrichten im Posteingang zurück. Der Grund kann die Zeitzone des Servers sein, da sie nicht für alle Server UTC ist, wie zum Beispiel Gmail. Aspose sendet Befehle wie 008 SEARCH ON 4-May-2014 gemäß dem IMAP‑Protokoll Das Ergebnis kann jedoch aufgrund von Zeitzoneneinstellungen des Servers variieren. Ein neues Mitglied wurde hinzugefügt in ImapMessageInfo als InternalDate was zusätzlich beim Filtern der Nachrichten hilft. Das folgende Code‑Snippet zeigt die Verwendung von InternalDate um Nachrichten zu filtern.
Groß-/Kleinschreibung‑sensitiv filtern
Das folgende Code‑Snippet zeigt, wie man eine fallabhängige E‑Mail‑Filterung verwendet.
Kodierung für Abfrage‑Builder festlegen
Die API‑ ImapQueryBuilder Konstruktor kann verwendet werden, um die Kodierung für den Suchstring festzulegen. Dies kann auch mit DefaultEncoding Eigenschaft des MailQueryBuilder. Das folgende Code‑Snippet zeigt, wie man die Kodierung für den Abfrage‑Builder festlegt.
Benutzerdefinierte Filteroptionen
Nachrichten mit benutzerdefiniertem Flag filtern
Benutzerdefinierte Suche für Filterung
Zum Beispiel erlaubt der RFC‑3501‑Standard keine Nachrichtensuche basierend auf dem Vorhandensein von Anhängen. Aber Gmail bietet IMAP-Erweiterungen die eine solche Suche ermöglichen. Das nächste Code‑Snippet zeigt, wie man eine entsprechende Abfrage erstellt.
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
Nachrichten mit Seitennavigation filtern
Die ImapClient bietet die Möglichkeit, Nachrichten aus dem Postfach zu suchen und sie mit Seitennavigation aufzulisten. Das folgende Code‑Snippet zeigt, wie man Nachrichten mit Seitennavigation filtert.