Filtern und Extrahieren von MBOX‑Nachrichten

Die Rolle des Nachrichtenfilterings

Beim Arbeiten mit großen MBOX‑Archiven kann das Laden jeder Nachricht in den Speicher ineffizient und unnötig sein. In den meisten Fällen müssen Entwickler nur grundlegende Metadaten wie Betreff, Absender, Empfänger oder Zeitstempel scannen, um:

  • Eine Nachrichtenliste in einer UI anzeigen
  • Benutzerdefinierte Filter vor der Extraktion anwenden
  • Berichte oder Zusammenfassungen erzeugen
  • Nachrichten für die Suche indizieren

Filtern vermeidet den Aufwand des Parsens vollständiger Nachrichteninhalte oder Anhänge und macht Anwendungen schneller und skalierbarer.

Nachrichten‑Metadaten zugreifen

Aspose.Email provides the MboxMessageInfo Klasse, die entwickelt wurde, um grundlegende Nachricht‑Metadaten zuzugreifen, ohne den gesamten MailMessage‑Inhalt zu lesen. Sie fungiert als Zusammenfassungs‑Objekt und wird zurückgegeben, wenn MboxStorageReader.EnumerateMessageInfo().

Schlüsseleigenschaften, die bereitgestellt werden von MboxMessageInfo um Informationen über eine Nachricht abzurufen, enthalten:

  • DateTime Date - Gibt das Datum der Nachricht zurück
  • MailAddress From - Gibt die Absenderadresse zurück
  • string Subject - Gibt den Betreff der Nachricht zurück
  • MailAddressCollection To - Gibt die Adresssammlung zurück, die die Empfänger der Nachricht enthält
  • MailAddressCollection CC - Gibt die Adresssammlung zurück, die die CC‑Empfänger enthält
  • MailAddressCollection Bcc - Gibt die Adresssammlung zurück, die die BCC‑Empfänger der Nachricht enthält
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());

foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
    Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
    Console.Writeline($"Date: {mboxMessageInfo.Date}");
    Console.Writeline($"From: {mboxMessageInfo.From}");
    Console.Writeline($"To: {mboxMessageInfo.To}");
    Console.Writeline($"CC: {mboxMessageInfo.CC}");
    Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}

Nachrichten nach EntryId extrahieren

Die MboxStorageReader Klasse enthält die EnumerateMessageInfo() Methode, die es Ihnen ermöglicht, durch jede Nachricht in einer MBOX‑Datei zu iterieren. Durch die Nutzung dieser Methode können einzelne Nachrichten extrahiert werden, ohne das gesamte Speichersystem wiederholt durchlaufen zu müssen. Dies verbessert die Leistung und reduziert die Verarbeitungszeit.

Die MboxMessageInfo class provides the EntryId Eigenschaft, die Zugriff auf eindeutige Kennungen jeder Nachricht in der MBOX‑Datei bietet. Diese Kennung kann in einer Datenbank gespeichert oder als Referenz verwendet werden, um bei Bedarf schnell bestimmte Nachrichten zu finden und zu extrahieren.

Die ExtractMessage(string id) Methode in der MboxStorageReader Die Klasse ermöglicht Entwicklern, Nachrichten anhand ihrer eindeutigen EntryId zu extrahieren. Mit der ExtractMessage(string id) Methode, Sie können die gespeicherte EntryId nutzen, um die entsprechende Nachricht abzurufen und weitere Vorgänge damit auszuführen.

Das folgende Codebeispiel demonstriert, wie Nachrichten aus einer MBOX‑Datei mithilfe von Kennungen extrahiert werden:

MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());

foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
    MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}

MBOX‑E‑Mails mit MailQuery filtern und durchsuchen

Aspose.Email für .NET bietet die Möglichkeit, Nachrichten in Postfach‑Archiven anhand benutzerdefinierter Abfragen zu filtern oder zu durchsuchen. Dies ermöglicht Entwicklern, nur die Nachrichten abzurufen, die bestimmten Kriterien entsprechen, wodurch die Leistung und Bedienbarkeit beim Umgang mit großen E‑Mail‑Archivdateien verbessert wird.

Das folgende Code‑Beispiel demonstriert, wie Suchkriterien auf eine Mail‑Speicherdatei mit der MailQuery‑API angewendet werden. In diesem Beispiel werden Nachrichten ausgewählt, wenn ihr Betreff den Ausdruck „Project Update“ enthält und sie vor dem heutigen Datum gesendet wurden.

using Aspose.Email.Storage.Mbox;
using Aspose.Email;

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);

foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Ladeoptionen beim Lesen von Nachrichten aus MBOX konfigurieren

Die folgenden Funktionen ermöglichen es, verschiedene Optionen zum Laden und Verarbeiten von Nachrichten festzulegen:

  • MailStorageConverter.MboxMessageOptions‑Eigenschaft – Ruft Optionen zum Laden von E‑Mails ab oder legt sie fest, wenn ein Mbox‑Speicher geparst wird.

  • MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options)-Methode – Der Parameter EmlLoadOptions gibt Optionen beim Lesen einer Nachricht aus dem Mbox‑Speicher an.

var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");