Abrufen und Auflisten von E‑Mails vom IMAP‑Server

Abrufen und Auflisten von Nachrichten

Wie man Identifizierungsinformationen für Nachrichten in einer Mailbox erhält

Beim Abrufen und Verarbeiten von E‑Mail‑Nachrichten können Sie detaillierte Identifizierungsinformationen wie Sequenznummern und eindeutige IDs mittels der folgenden Funktionen der neuesten Version von Aspose.Email für .NET erhalten:

Aspose.Email.ImapMessageInfo Klasse: Stellt die Identifizierungsinformationen über eine Nachricht in einer IMAP‑Mailbox dar.

ImapMessageInfo.SequenceNumber Eigenschaft: Ruft die Sequenznummer der Nachricht ab.

ImapMessageInfo.UniqueId Eigenschaft: Ruft die eindeutige Kennung der Nachricht ab.

Aspose.Email.MailMessage.ItemId Eigenschaft: Stellt zusätzliche Identifizierungsinformationen über die Nachricht innerhalb der Mailbox dar.

Das folgende Code‑Snippet demonstriert, wie man Identifizierungsinformationen für Nachrichten in einer IMAP‑Mailbox erhält:

  1. Erstellen Sie eine Instanz von dem ImapClient Klasse, indem Sie die notwendigen Parameter wie IMAP‑Server‑Host, Port, E‑Mail‑Adresse, Passwort und Sicherheitsoptionen angeben.
  2. Verwenden Sie die ListMessages Methode, um eine Liste von Nachrichten aus dem Ordner "INBOX" abzurufen. Beschränken Sie die Liste auf die ersten fünf Nachrichten mit der Take(5)-Methode.
  3. Extrahieren Sie die Sequenznummern der aufgelisteten Nachrichten mithilfe der SequenceNumber Eigenschaft jeder Nachricht.
  4. Verwenden Sie die FetchMessages Methode, um die vollständigen Details der Nachrichten vom Server abzurufen, wobei die im vorherigen Schritt erhaltenen Sequenznummern verwendet werden.
  5. Durchlaufen Sie die abgerufenen Nachrichten und rufen Sie für jede Nachricht die folgenden Informationen ab und zeigen Sie sie an:
  • Die Sequenznummer der Nachricht.
  • Die Eigenschaft ItemId.SequenceNumber.
  • Der Betreff der Nachricht.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

MIME‑Nachrichten‑IDs vom Server auflisten

ImapMessageInfo bietet das MIME MessageId zur Nachrichtenidentifikation, ohne die komplette Nachricht zu extrahieren. Das folgende Code‑Snippet zeigt, wie man MIME‑MessageId auflistet.

Nachrichten vom Server auflisten

Aspose.Email bietet eine zweifache, überladene Variante von ListMessages() um eine bestimmte Anzahl von Nachrichten anhand einer Abfrage abzurufen. Das folgende Code‑Snippet zeigt, wie man Nachrichten auflistet.

Nachrichten rekursiv auflisten

Das IMAP‑Protokoll unterstützt das rekursive Auflisten von Nachrichten aus einem Postfachordner. Das hilft, Nachrichten auch aus Unterordnern eines Ordners aufzulisten. Das folgende Code‑Snippet zeigt, wie man Nachrichten rekursiv auflistet.

Nachrichten mit MultiConnection auflisten

ImapClient bietet ein UseMultiConnection Eigenschaft, die verwendet werden kann, um mehrere Verbindungen für umfangreiche Vorgänge zu erstellen. Sie können auch die Anzahl der Verbindungen festlegen, die im Multi‑Connection‑Modus verwendet werden sollen, indem Sie ImapClient.ConnectionsQuantity. Das folgende Code‑Snippet demonstriert die Verwendung des Multi‑Verbindungs‑Modus zum Auflisten von Nachrichten und vergleicht dessen Leistung mit dem Einzel‑Verbindungs‑Modus.

Nachrichten mit Paging‑Unterstützung auflisten

In Szenarien, in denen der E-Mail-Server eine große Anzahl von Nachrichten im Postfach enthält, ist es häufig gewünscht, die Nachrichten mit Paging-Unterstützung aufzulisten oder abzurufen. Aspose.Email APIs ImapClient ermöglicht das Abrufen von Nachrichten vom Server mit Paging-Unterstützung.

Nachrichtenanhänge auflisten

Um Informationen zu Anhängen wie Name, Größe zu erhalten, ohne die Anhangsdaten abzurufen, probieren Sie die folgenden APIs aus:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - Stellt Anhangsinformationen dar.
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Stellt eine Sammlung von ImapAttachmentInfo Klasse.
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) – Gibt Informationen für jeden Anhang einer Nachricht zurück.

Das untenstehende Codebeispiel mit Schritten zeigt Ihnen, wie Sie die APIs verwenden:

  1. Rufen Sie die ListMessages() Methode am imapClient-Objekt. Diese Methode gibt eine ImapMessageInfoCollection zurück, die Informationen zu den Nachrichten im Postfach enthält.
  2. Iterieren Sie mit einer foreach‑Schleife über jede Nachricht in der messageInfoCollection.
  3. Rufen Sie die ListAttachments() Methode am imapClient-Objekt, wobei die SequenceNumber‑Eigenschaft des Nachrichtenobjekts als Parameter übergeben wird. Diese Methode gibt eine ImapAttachmentInfoCollection zurück, die Informationen zu den Anhängen der Nachricht enthält.
  4. Iterieren Sie mit einer foreach‑Schleife über jeden Anhang in der attachmentInfoCollection.
  5. Innerhalb der inneren Schleife können Sie auf die Informationen zu jedem Anhang über die Eigenschaften des attachmentInfo-Objekts zugreifen.
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

Abrufen und Speichern von Nachrichten

Nachrichten vom Server abrufen

Die ImapClient Klasse kann Nachrichten von einem IMAP-Server abrufen und die Nachrichten im EML-Format auf einer lokalen Festplatte speichern. Die folgenden Schritte sind erforderlich, um die Nachrichten zu speichern:

  1. Erstellen Sie eine Instanz von dem ImapClient Klasse.
  2. Geben Sie im ImapClient einen Hostnamen, Port, Benutzernamen und Passwort an constructor.
  3. Wählen Sie den Ordner aus mit SelectFolder() Methode.
  4. Rufen Sie die ListMessages Methode, um das ImapMessageInfoCollection Objekt.
  5. Iterieren Sie durch die ImapMessageInfoCollection Sammlung, rufen Sie die SaveMessage() Methode und geben Sie den Ausgabepfad sowie den Dateinamen an.

Das folgende Codefragment zeigt, wie man E-Mail-Nachrichten von einem Server abruft und speichert.

Nachrichten in absteigender Reihenfolge abrufen

Aspose.Email bietet ImapClient.ListMessagesByPage Methode, die Nachrichten mit Paging-Unterstützung auflistet. Einige Überladungen von ImapClient.ListMessagesByPage akzeptiert PageSettings als Parameter zur Verfügung. PageSettings stellt ein AscendingSorting Eigenschaft, die, wenn sie auf false gesetzt ist, E-Mails in absteigender Reihenfolge zurückgibt.

Der folgende Beispielcode demonstriert die Verwendung von AscendingSorting Eigenschaft des PageSettings Klasse zum Ändern der Reihenfolge von E-Mails.

Nachrichten im MSG-Format speichern

Um E-Mails im MSG-Format zu speichern, ImapClient.FetchMessage() Methode muss aufgerufen werden. Sie gibt die Nachricht als Instanz von MailMessage Klasse. Die MailMessage.Save() Methode kann anschließend aufgerufen werden, um die Nachricht im MSG-Format zu speichern. Das folgende Codefragment zeigt, wie Nachrichten im MSG-Format gespeichert werden.

Abgerufene Nachrichten gruppieren

ImapClient bietet ein FetchMessages Methode, die ein Iterable von Sequenznummern oder eindeutiger ID akzeptiert und eine Liste von MailMessage. Das folgende Code‑Snippet demonstriert die Verwendung von FetchMessages Methode zum Abrufen von Nachrichten mittels Sequenznummern und eindeutiger ID.

Ordner abrufen und Nachrichten rekursiv lesen

In diesem Artikel sind die meisten ImapClient Funktionen werden verwendet, um eine Anwendung zu erstellen, die alle Ordner und Unterordner rekursiv von einem IMAP-Server auflistet. Sie speichert außerdem die Nachrichten in jedem Ordner und Unterordner im MSG-Format auf einer lokalen Festplatte. Auf der Festplatte werden Ordner und Nachrichten in derselben hierarchischen Struktur wie auf dem IMAP-Server erstellt und gespeichert. Das folgende Code‑Snippet zeigt, wie Sie Nachrichten- und Unterordnerinformationen rekursiv erhalten.

Spezielle Nachrichteninformationen verarbeiten

Zusätzliche Parameter als Zusammenfassungsinformationen abrufen

List-Unsubscribe-Header-Informationen abrufen

Der List-Unsubscribe-Header enthält die URL zum Abmelden von E-Mail-Listen, z. B. Werbung, Newsletter usw. Um den List-Unsubscribe-Header zu erhalten, verwenden Sie die ListUnsubscribe Eigenschaft des ImapMessageInfo Klasse. Das folgende Beispiel zeigt die Verwendung von ListUnsubscribe Eigenschaft, um den List-Unsubscribe-Header abzurufen.