Odczyt plików MBOX

Możliwości odczytu Aspose.Email

Mozilla Thunderbird Thunderbird jest otwartoźródłowym, wieloplatformowym klientem poczty e‑mail, opracowanym przez Mozilla Foundation. Przechowuje wiadomości w własnej strukturze plików, zarządzając indeksami wiadomości i podfolderami przy użyciu własnych formatów plików. Thunderbird tworzy jeden plik .mbox dla każdego folderu poczty (np. Skrzynka odbiorcza, Wysłane, Kosz) i zapisuje je w katalogu profilu użytkownika. Każdy plik zawiera wszystkie wiadomości z tego folderu w formie połączonej.

Aspose.Email dla .NET udostępnia API do odczytywania wiadomości z plików .mbox Thunderbird przy użyciu MboxrdStorageReader klasa, która umożliwia programistom:

  • Otwórz i czytaj wiadomości kolejno, po jednej
  • Pobierz metadane takie jak Temat, Od, Do, Data itp., bez ładowania pełnej treści
  • Wyodrębnij pojedyncze wiadomości przy użyciu unikalnych identyfikatorów (EntryId)
  • Zachowaj kodowanie, załączniki TNEF i formatowanie
  • Odczyt plików asynchronicznie dla lepszej wydajności przy dużych archiwach

Odczyt plików MBOX synchronicznie

odczytaj wiadomości z pliku magazynu poczty Mozilla Thunderbird. Ten artykuł pokazuje, jak odczytać wiadomości z magazynu e-mail Thunderbird:

  1. Otwórz plik magazynu Thunderbird w FileStream.
  2. Utwórz instancję MboxrdStorageReader klasa i przekaż powyższy strumień do konstruktora.
  3. Wywołaj ReadNextMessage() aby uzyskać pierwszą wiadomość.
  4. Użyj tego samego ReadNextMessage() w pętli while, aby odczytać wszystkie wiadomości.
  5. Zamknij wszystkie strumienie.

Poniższy fragment kodu pokazuje, jak odczytać wszystkie wiadomości z magazynu poczty Thunderbird.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

// Open the storage file with FileStream
var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read);
// Create an instance of the MboxrdStorageReader class and pass the stream
var reader = new MboxrdStorageReader(stream, false);
// Start reading messages
var message = reader.ReadNextMessage();

// Read all messages in a loop
while (message != null)
{
    // Manipulate message - show contents
    Console.WriteLine("Subject: " + message.Subject);
    // Save this message in EML or MSG format
    message.Save(message.Subject + ".eml", SaveOptions.DefaultEml);
    message.Save(message.Subject + ".msg", SaveOptions.DefaultMsgUnicode);

    // Get the next message
    message = reader.ReadNextMessage();
}

// Close the streams
reader.Dispose();
stream.Close();

Odczyt plików MBOX asynchronicznie

Aby zwiększyć wydajność i responsywność przy przetwarzaniu dużych plików MBOX, Aspose.Email dla .NET udostępnia asynchroniczne odczytywanie MBOX za pomocą CreateReaderAsync metoda. Ta funkcja jest szczególnie przydatna w aplikacjach obsługujących duże archiwa e-mail lub wykonujących operacje I/O w wątkach w tle lub usługach sieciowych. Poniższy przykład kodu pokazuje, jak czytać wiadomości e-mail z pliku MBOX asynchronicznie przy użyciu czytnika magazynu Aspose.Email:

string mboxFilePath = "emails.mbox";

    // Create a reader for the MBOX file asynchronously
    using (var reader = await MboxrdStorageReader.CreateReaderAsync(mboxFilePath, CancellationToken.None))
    {
    Console.WriteLine("MBOX reader initialized.");

    // Read messages from the MBOX file
        while (reader.ReadNextMessage() is var message && message != null)
        {
            Console.WriteLine($"Subject: {message.Subject}");
        }
    }

Odczyt wiadomości e-mail w partiach z obsługą paginacji

Uzyskaj paginowany dostęp do wiadomości przechowywanych w plikach skrzynki pocztowej. Ta funkcja umożliwia programistom bardziej efektywne przetwarzanie dużych archiwów e-mail poprzez pobieranie wiadomości w mniejszych partiach – poprawiając wydajność i zmniejszając obciążenie pamięci. Skorzystaj z następujących metod MboxStorageReader klasa:

Poniższy przykład kodu demonstruje, jak odczytać określony zakres wiadomości z archiwum poczty, definiując indeks początkowy i rozmiar partii. W przykładzie metoda pobiera 10 wiadomości zaczynając od indeksu 0.

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

var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
int startIndex = 0;
int count = 10; // Retrieve messages in batches of 10

foreach (var message in reader.EnumerateMessages(startIndex, count))
{
    Console.WriteLine("Subject: " + message.Subject);
}

Ustaw preferowane kodowanie tekstu przy ładowaniu plików MBOX do odczytu

Opcja kodowania jest dostępna dla MboxrdStorageReader klasa. Zapewnia dodatkowe opcje ładowania pliku mbox i gwarantuje, że wiadomości z zakodowaną zawartością będą prawidłowo odczytane i przetworzone. Poniższy fragment kodu pokazuje, jak ustawić kodowanie tekstu spełniające Twoje potrzeby:

var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();

Uzyskaj całkowitą liczbę wiadomości z plików MBOX

Ten MboxrdStorageReader klasa zapewnia możliwość odczytania liczby elementów dostępnych w pliku MBox. Może to być użyte do tworzenia aplikacji wyświetlających postęp działania podczas przetwarzania takiego pliku.

// The path to the File directory.
var dataDir = RunExamples.GetDataDir_Thunderbird();

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    Console.WriteLine("Total number of messages in Mbox file: " + reader.GetTotalItemsCount());
}

Pobierz bieżący rozmiar wiadomości

using (var stream = new FileStream(dataDir + "ExampleMbox.mbox", FileMode.Open, FileAccess.Read))
using (var reader = new MboxrdStorageReader(stream, false))
{
    MailMessage msg;
    while ((msg = reader.ReadNextMessage()) != null)
    {
        long currentDataSize = reader.CurrentDataSize;

        msg.Dispose();
    }
}