MBOX Dosyalarını Okuma

Aspose.Email Okuma Yetkinlikleri

Mozilla Thunderbird Açık kaynaklı, çok platformlu bir e-posta istemcisidir ve Mozilla Vakfı tarafından geliştirilmiştir. E-postaları kendi dosya yapısında depolar, mesaj indekslerini ve alt klasörleri özel dosya formatlarıyla yönetir. Thunderbird, her e-posta klasörü (ör. Gelen Kutusu, Gönderilmiş, Çöp) için bir .mbox dosyası oluşturur ve bu dosyaları kullanıcının profil dizininde saklar. Her dosya, o klasördeki tüm mesajları birleştirilmiş bir biçimde içerir.

Aspose.Email for .NET, Thunderbird .mbox dosyalarından mesajları okumak için API’ler sağlar MboxrdStorageReader geliştiricilere izin veren sınıf:

  • Mesajları sıralı olarak, tek tek açın ve okuyun
  • Tam içeriği yüklemeden Konu, Gönderen, Alıcı, Tarih vb. meta verileri alın
  • Benzersiz tanımlayıcıları (EntryId) kullanarak bireysel mesajları çıkarın
  • Kodlamayı, TNEF eklerini ve biçimlendirmeyi koruyun
  • Büyük arşivlerde daha iyi performans için dosyaları asenkron olarak okuyun

MBOX Dosyalarını Eşzamanlı Olarak Oku

Mozilla Thunderbird posta depolama dosyasından mesajları okuyun. Bu makale, Thunderbird e-posta depolamasından mesajların nasıl okunacağını gösterir:

  1. Thunderbird depolama dosyasını FileStream içinde aç.
  2. Şunun bir örneğini oluştur MboxrdStorageReader sınıf ve yukarıdaki akışı yapıcıya aktar.
  3. Çağırın ReadNextMessage() ilk mesajı almak için.
  4. Aynısını kullanın ReadNextMessage() tüm mesajları okumak için bir while döngüsü içinde.
  5. Tüm akışları kapat.

Aşağıdaki kod snippet’i, bir Thunderbird posta depolamasından tüm mesajları nasıl okuyacağınızı gösterir.

// 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();

MBOX Dosyalarını Asenkron Olarak Oku

Büyük MBOX dosyalarını işlerken performansı ve yanıt verebilirliği artırmak için Aspose.Email for .NET, asenkron MBOX okuma özelliği sunar CreateReaderAsync metodu. Bu özellik, büyük e-posta arşivlerini işleyen veya arka plan iş parçacıklarında ya da web hizmetlerinde I/O ağırlıklı işlemler yapan uygulamalar için özellikle faydalıdır. Aşağıdaki kod örneği, Aspose.Email depolama okuyucusunu kullanarak MBOX dosyasından e-posta mesajlarını asenkron olarak nasıl okuyacağınızı gösterir:

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

Sayfalama Desteğiyle E-posta Mesajlarını Toplu Olarak Okuma

Posta kutusu dosyalarında depolanan mesajlara sayfalı erişim sağlayın. Bu özellik, mesajları daha küçük parçalar halinde alarak büyük e-posta arşivlerini daha verimli işlemeyi sağlar - performansı artırır ve bellek yükünü azaltır. Aşağıdaki yöntemleri kullanın MboxStorageReader sınıf:

Aşağıdaki kod örneği, bir posta arşivinden belirli bir mesaj aralığını başlangıç indeksi ve toplu boyutu tanımlayarak nasıl okuyacağını gösterir. Örnekte, yöntem 0 indeksinden başlayarak 10 mesaj alır.

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

MBOX Dosyalarını Okuma İçin Yüklerken Tercih Edilen Metin Kodlamasını Ayarlama

Kodlama seçeneği şunlar için mevcuttur: MboxrdStorageReader class. Bu, mbox dosyasını yüklemek için ek seçenekler sağlar ve kodlanmış içeriğe sahip mesajların doğru şekilde okunup işlenmesini garanti eder. Aşağıdaki kod parçacığı, ihtiyaçlarınızı karşılayacak metin kodlamasını nasıl ayarlayabileceğinizi gösterir:

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

MBOX Dosyalarındaki Toplam Mesaj Sayısını Al

Bu MboxrdStorageReader sınıf, bir MBox dosyasında mevcut olan öğe sayısını okuma yeteneği sağlar. Bu, dosya işlenirken aktivitenin ilerlemesini gösteren uygulamaların geliştirilmesinde kullanılabilir.

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

Mevcut Mesaj Boyutunu Al

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