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:
- Otwórz plik magazynu Thunderbird w FileStream.
- Utwórz instancję MboxrdStorageReader klasa i przekaż powyższy strumień do konstruktora.
- Wywołaj ReadNextMessage() aby uzyskać pierwszą wiadomość.
- Użyj tego samego ReadNextMessage() w pętli while, aby odczytać wszystkie wiadomości.
- 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:
-
EnumerateMessages(int startIndex, int count) - Zwraca kolekcję enumerable obiektów MailMessage, zaczynając od określonego indeksu i ograniczoną podaną liczbą.
-
EnumerateMessageInfo(int startIndex, int count) - Zwraca kolekcję enumerable obiektów MboxMessageInfo zawierających wyłącznie metadane, paginowaną według indeksu i liczby.
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();
}
}