Filtrowanie i wyodrębnianie wiadomości MBOX

Rola filtrowania wiadomości

Podczas pracy z dużymi archiwami MBOX ładowanie każdej wiadomości do pamięci może być nieefektywne i zbędne. W większości przypadków programiści potrzebują jedynie przeszukać podstawowe metadane, takie jak temat, nadawca, odbiorca lub znacznik czasu, aby:

  • Wyświetlenie listy wiadomości w interfejsie użytkownika
  • Zastosowanie własnych filtrów przed wyodrębnieniem
  • Generowanie raportów lub podsumowań
  • Indeksowanie wiadomości do wyszukiwania

Filtrowanie eliminuje konieczność parsowania pełnych treści wiadomości lub załączników, co sprawia, że aplikacje są szybsze i bardziej skalowalne.

Dostęp do metadanych wiadomości

Aspose.Email udostępnia MboxMessageInfo klasa zaprojektowana do uzyskiwania podstawowych metadanych wiadomości bez wczytywania pełnej zawartości MailMessage. Działa jako obiekt podsumowujący i jest zwracana przy wywoływaniu MboxStorageReader.EnumerateMessageInfo().

Kluczowe właściwości udostępniane przez MboxMessageInfo aby pobrać informacje o wiadomości, uwzględnij:

  • DateTime Date - Pobiera datę wiadomości
  • MailAddress From - Pobiera adres nadawcy
  • string Subject - Pobiera temat wiadomości
  • MailAddressCollection Do - Pobiera kolekcję adresów zawierającą odbiorców wiadomości
  • MailAddressCollection CC - Pobiera kolekcję adresów zawierającą odbiorców DW (CC)
  • MailAddressCollection Bcc - Pobiera kolekcję adresów zawierającą odbiorców ukrytych (BCC) wiadomości
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}");
}

Wyodrębnianie wiadomości po EntryId

Ten MboxStorageReader klasa zawiera EnumerateMessageInfo() metoda, która umożliwia iterację po każdej wiadomości w pliku MBOX. Korzystając z tej metody, można wyodrębnić poszczególne wiadomości bez konieczności wielokrotnego przeglądania całego magazynu. Poprawia to wydajność i skraca czas przetwarzania.

Ten MboxMessageInfo klasa udostępnia EntryId właściwość, która zapewnia dostęp do unikalnych identyfikatorów każdej wiadomości w pliku MBOX. Ten identyfikator może być przechowywany w bazie danych lub używany jako odniesienie do szybkiego znajdowania i wyodrębniania konkretnych wiadomości w razie potrzeby.

Ten ExtractMessage(string id) metoda w MboxStorageReader klasa umożliwia programistom wyodrębnianie wiadomości na podstawie ich unikalnego EntryId. Z ExtractMessage(string id) metoda, możesz wykorzystać zapisany EntryId do pobrania odpowiadającej wiadomości i wykonania dodatkowych operacji.

Poniższy przykład kodu demonstruje, jak wyodrębnić wiadomości z pliku MBOX przy użyciu identyfikatorów:

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

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

Filtrowanie i wyszukiwanie e‑maili MBOX przy użyciu MailQuery

Aspose.Email dla .NET zapewnia możliwość filtrowania lub wyszukiwania wiadomości w archiwach skrzynek pocztowych na podstawie własnych zapytań. Pozwala to programistom pobierać tylko te wiadomości, które spełniają określone kryteria, poprawiając wydajność i użyteczność przy pracy z dużymi plikami archiwów e‑mail.

Poniższy przykład kodu demonstruje, jak zastosować kryteria wyszukiwania do pliku przechowującego pocztę za pomocą API MailQuery. W tym przykładzie wybrano wiadomości, których temat zawiera frazę „Project Update” i które zostały wysłane przed dzisiejszą datą.

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

Skonfiguruj opcje ładowania przy odczycie wiadomości z MBOX

Poniższe funkcje umożliwią określenie różnych opcji związanych z ładowaniem i przetwarzaniem wiadomości:

  • Właściwość MailStorageConverter.MboxMessageOptions – pobiera lub ustawia opcje ładowania e‑maili podczas parsowania magazynu Mbox.

  • Metoda MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) – parametr EmlLoadOptions określa opcje podczas odczytu wiadomości z magazynu Mbox.

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