Arbeiten mit Nachrichten vom Server

Abrufen von Postfach‑Informationen

Wir können Informationen über das Postfach, wie die Anzahl der Nachrichten und die Größe des Postfachs, über die Methoden GetMailBoxSize() und GetMailBoxInfo() abrufen.

  • Die Methode GetMailBoxSize() gibt die Größe des Postfachs in Bytes zurück.
  • Die Methode GetMailBoxInfo() gibt ein Objekt vom Typ Pop3MailBoxInfo zurück.

Es ist auch möglich, die Anzahl der Nachrichten über die MessageCount‑Eigenschaft und die Größe über die OccupiedSize‑Eigenschaft abzurufen. Der folgende Beispielcode zeigt, wie man Informationen über das Postfach erhält. Er zeigt, wie man:

  1. Erstellen Sie ein Pop3Client.
  2. Verbindung zu einem POP3‑Server herstellen.
  3. Größe des Postfachs abrufen.
  4. Postfach‑Info abrufen.
  5. Erhalte die Anzahl der Nachrichten im Postfach.
  6. Erhalte die belegte Größe.

Abrufen der E‑Mail‑Anzahl im Postfach

Das folgende Code‑Snippet zeigt, wie man die E‑Mail‑Nachrichten in einem Postfach zählt.

Aspose.Email ermöglicht Entwicklern, auf vielfältige Weise mit E‑Mails zu arbeiten. Beispielsweise können sie Header‑Informationen abrufen, bevor sie entscheiden, ob sie eine E‑Mail herunterladen. Oder sie können E‑Mails von einem Server abrufen und diese ohne Parsing (schneller) oder nach dem Parsing (langsamer) speichern. Dieser Artikel zeigt, wie man E‑Mails abruft und konvertiert.

Abrufen von E‑Mail‑Header‑Informationen

E‑Mail‑Header können uns Informationen über eine E‑Mail‑Nachricht liefern, die wir nutzen können, um zu entscheiden, ob die gesamte Nachricht abgerufen werden soll oder nicht. Typischerweise enthalten die Headerinformationen Absender, Betreff, Empfangsdatum usw. (E‑Mail‑Header werden ausführlich in „Anpassen von E‑Mail‑Headern“ beschrieben. Dieses Thema behandelt speziell das Senden von E‑Mails mit SMTP, aber die Informationen zu den Header‑Inhalten gelten auch für POP3‑E‑Mails). Die folgenden Beispiele zeigen, wie man E‑Mail‑Header von einem POP3‑Server anhand der Sequenznummer der Nachricht abruft.

Abrufen von E‑Mail‑Nachrichten

Die Komponente Aspose.Email.Pop3 stellt die Möglichkeit bereit, E‑Mail‑Nachrichten vom POP3‑Server abzurufen und mit Hilfe von MailMessage‑Komponenten in eine MailMessage‑Instanz zu parsen. Die MailMessage‑Klasse enthält mehrere Eigenschaften und Methoden zur Manipulation von E‑Mail‑Inhalten. Durch die Verwendung der FetchMessage‑Funktion der Pop3Client‑Klasse können Sie eine MailMessage‑Instanz direkt vom POP3‑Server erhalten. Das folgende Code‑Snippet zeigt, wie man eine komplette E‑Mail‑Nachricht vom POP3‑Server abruft.

Abrufen von Nachrichten‑Zusammenfassungsinformationen mittels eindeutiger ID

Der POP3‑Client der API kann Zusammenfassungsinformationen einer Nachricht vom Server anhand der eindeutigen ID der Nachricht abrufen. Dies ermöglicht einen schnellen Zugriff auf die Kurzinfos einer Nachricht, ohne zuerst die gesamte Nachricht vom Server zu holen. Das folgende Code‑Snippet zeigt, wie man Zusammenfassungsinformationen einer Nachricht abruft.

Nachrichten mit MultiConnection auflisten

Für stark belastete Vorgänge bietet Aspose.Email die Eigenschaft ‘use_multi_connection’ des Pop3Client Klasse zur Nutzung mehrerer Verbindungen beim Abrufen von E‑Mails. Die Verwendung dieses Modus führt jedoch nicht zwangsläufig zu einer Leistungssteigerung. Das folgende Code‑Snippet zeigt, wie Sie eine Verbindung zu einem POP3‑Server herstellen, den Client so konfigurieren, dass bis zu 5 gleichzeitige Verbindungen erlaubt sind, und den Mehrfachverbindungs‑Modus aktivieren, um Informationen über die auf dem Server vorhandenen Nachrichten abzurufen:

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()

Abrufen von Nachrichten vom Server und Speichern auf Disk

Nachricht ohne Parsing auf Disk speichern

Wenn Sie E‑Mail‑Nachrichten vom POP3‑Server herunterladen möchten, ohne sie zu parsen, verwenden Sie die SaveMessage‑Funktion der Pop3Client‑Klasse. Die SaveMessage‑Funktion parsed die E‑Mail‑Nachricht nicht, sodass sie schneller ist als die FetchMessage‑Funktion. Das folgende Code‑Snippet zeigt, wie man eine Nachricht anhand ihrer Sequenznummer speichert, in diesem Fall Nummer 1. Die SaveMessage‑Methode speichert die Nachricht im ursprünglichen EML‑Format, ohne sie zu parsen.

Nachricht vor dem Speichern parsen

Verwenden Sie die Methode ‘fetch_message’ des Client‑Objekts, das mit Pop3Client Klasse zum Abrufen einer Nachricht mit einer bestimmten Sequenznummer. Das nachstehende Codebeispiel demonstriert, wie man eine spezifische Nachricht abruft und sie mithilfe ihres Betreffs als Dateinamen speichert, indem man die Methode ‘save’ auf dem msg‑Objekt aufruft:

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)

Filtern von Nachrichten nach Absender, Empfänger oder Datum

Die Pop3Client‑Klasse, beschrieben in "Verbindung zu einem POP3‑Server herstellen", stellt die Methode list_messages() bereit, die alle Nachrichten aus einem Postfach abruft. Um nur Nachrichten zu erhalten, die einer Bedingung entsprechen, verwenden Sie die überladene ListMessages()-Methode, die ein MailQuery‑Objekt als Argument nimmt. Die MailQuery‑Klasse bietet verschiedene Eigenschaften zum Festlegen der Abfragebedingungen, z. B. Datum, Betreff, Absender, Empfänger usw. Die MailQueryBuilder‑Klasse wird verwendet, um den Suchausdruck zu erstellen. Zuerst werden alle Bedingungen und Einschränkungen gesetzt und dann wird das MailQuery‑Objekt mit der von MailQueryBuilder erstellten Abfrage gefüllt. Das MailQuery‑Objekt wird vom Pop3Client verwendet, um die gefilterten Informationen vom Server zu extrahieren. Dieser Artikel zeigt, wie man E‑Mail‑Nachrichten aus einem Postfach filtert. Das erste Beispiel illustriert das Filtern von Nachrichten nach Datum und Betreff. Wir zeigen außerdem, wie man nach weiteren Kriterien filtert und komplexere Abfragen erstellt. Zudem wird gezeigt, wie man den Datums‑ und Zeitfilter anwendet, um bestimmte E‑Mails aus dem Postfach abzurufen. Zusätzlich wird die Anwendung von fallabhängigen Filtern dargestellt.

Filtern von Nachrichten aus dem Postfach

Um Nachrichten aus einem Postfach zu filtern:

  1. Verbinden und beim POP3‑Server anmelden.
  2. Erstellen Sie eine Instanz von MailQuery und setzen Sie die gewünschten Eigenschaften.
  3. Rufen Sie die Methode Pop3Client.list_messages(MailQuery query) auf und übergeben Sie das MailQuery als Parameter, um nur die gefilterten Nachrichten zu erhalten.

Das folgende Code‑Snippet zeigt, wie Sie sich mit einem POP3‑Postfach verbinden und Nachrichten abrufen, die heute eingegangen sind und das Wort "newsletter" im Betreff enthalten.

Abrufen von Nachrichten, die bestimmte Kriterien erfüllen

Aspose.Email ermöglicht zudem das Erstellen komplexer Suchkriterien für das Abfragen und Filtern von E‑Mail‑Nachrichten. Verwenden Sie hierfür die MailQueryBuilder Klasse und ihre Eigenschaften. Die Kriterien für das Abrufen sind wie folgt:

  • Nachrichten nach Lieferdatum abrufen.
  • Nachrichten innerhalb eines Bereichs abrufen.
  • Nachrichten von einem bestimmten Absender abrufen.
  • Nachrichten von einer bestimmten Domain abrufen.
  • Nachrichten an einen bestimmten Empfänger abrufen.

Heutiges Datum

Um Nachrichten nach Lieferdatum abzurufen, verwenden Sie die ‘internal_date’-Eigenschaft, wie im nachstehenden Codebeispiel gezeigt:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Datumsbereich

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))

Bestimmter Absender

Um Nachrichten von einem bestimmten Absender abzurufen, verwenden Sie die ‘from_address’-Eigenschaft, wie im nachstehenden Codebeispiel gezeigt:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Bestimmte Domain

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")

Bestimmter Empfänger

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")

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.

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
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.

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)

Das folgende Code‑Snippet zeigt, wie Sie diese Funktion in Ihr Projekt integrieren können:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)