Lettura dei file MBOX
Capacità di Lettura di Aspose.Email
Mozilla Thunderbird è un client email open-source, multipiattaforma, sviluppato dalla Mozilla Foundation. Conserva le email nella sua struttura di file, gestendo indici dei messaggi e sottocartelle tramite formati di file proprietari. Thunderbird crea un file .mbox per ciascuna cartella email (ad esempio, Posta in arrivo, Inviata, Cestino) e memorizza questi file nella directory del profilo dell’utente. Ogni file contiene tutti i messaggi di quella cartella in forma concatenata.
Aspose.Email per .NET fornisce API per leggere i messaggi da file .mbox di Thunderbird usando il MboxrdStorageReader classe che permette agli sviluppatori di:
- Apri e leggi i messaggi in sequenza, uno alla volta
- Recupera metadati come Oggetto, Da, A, Data, ecc., senza caricare il contenuto completo
- Estrai messaggi individuali usando identificatori univoci (EntryId)
- Preserva la codifica, gli allegati TNEF e la formattazione
- Leggi i file in modo asincrono per migliori prestazioni su grandi archivi
Leggi File MBOX Sincronamente
leggere i messaggi dal file di archiviazione della posta di Mozilla Thunderbird. Questo articolo mostra come leggere i messaggi dall’archivio email di Thunderbird:
- Apri il file di storage di Thunderbird in FileStream.
- Crea un’istanza di MboxrdStorageReader classe e passa il flusso sopra al costruttore.
- Chiama ReadNextMessage() per ottenere il primo messaggio.
- Usa lo stesso ReadNextMessage() in un ciclo while per leggere tutti i messaggi.
- Chiudi tutti i flussi.
Il seguente frammento di codice mostra come leggere tutti i messaggi da uno storage di posta 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();
Leggi File MBOX Asincronamente
Per migliorare le prestazioni e la reattività durante l’elaborazione di grandi file MBOX, Aspose.Email per .NET fornisce la lettura asincrona dei MBOX tramite il CreateReaderAsync metodo. Questa funzionalità è particolarmente utile nelle applicazioni che gestiscono grandi archivi email o eseguono operazioni I/O in thread in background o servizi web. Il seguente esempio di codice dimostra come leggere messaggi email da un file MBOX in modo asincrono utilizzando un lettore di storage 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}");
}
}
Leggi Messaggi Email in Batch con Supporto alla Paginazione
Ottieni accesso paginato ai messaggi memorizzati nei file delle caselle di posta. Questa funzionalità permette agli sviluppatori di elaborare archivi email di grandi dimensioni in modo più efficiente, recuperando i messaggi in porzioni più piccole - migliorando le prestazioni e riducendo il carico di memoria. Usa i seguenti metodi del MboxStorageReader classe:
-
EnumerateMessages(int startIndex, int count) - Restituisce una raccolta enumerabile di istanze MailMessage, a partire dall’indice specificato e limitata al conteggio fornito.
-
EnumerateMessageInfo(int startIndex, int count) - Restituisce una raccolta enumerabile di oggetti MboxMessageInfo con solo i metadati, paginata anche per indice e conteggio.
Il campione di codice sottostante dimostra come leggere un intervallo specifico di messaggi da un archivio di posta definendo un indice iniziale e una dimensione di batch. Nell’esempio, il metodo recupera 10 messaggi a partire dall’indice 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);
}
Imposta la Codifica Testo Preferita quando Carichi File MBOX per la Lettura
L’opzione di codifica è disponibile per MboxrdStorageReader classe. Questo fornisce opzioni aggiuntive per il caricamento del file mbox e garantisce che i messaggi con contenuto codificato vengano letti e processati correttamente. Il seguente frammento di codice mostra come impostare la codifica del testo che soddisfa le tue esigenze:
var reader = new MboxrdStorageReader("sample.mbox", new MboxLoadOptions() { PreferredTextEncoding = Encoding.UTF8});
var message = reader.ReadNextMessage();
Ottenere il numero totale di messaggi dai file MBOX
Il MboxrdStorageReader la classe fornisce la capacità di leggere il numero di elementi disponibili in un file MBox. Questo può essere usato per sviluppare applicazioni che mostrano l’avanzamento dell’attività durante l’elaborazione di tale file.
// 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());
}
Ottieni la dimensione corrente del messaggio
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();
}
}