MBOX फ़ाइलें पढ़ना

Aspose.Email पढ़ने की क्षमताएँ

Mozilla Thunderbird एक ओपन-सोर्स, क्रॉस-प्लेटफ़ॉर्म ईमेल क्लाइंट है, जिसे Mozilla Foundation द्वारा विकसित किया गया है। यह ईमेल को अपनी फाइल संरचना में संग्रहीत करता है, संदेश इंडेक्स और सबफ़ोल्डर्स का प्रबंधन अपना स्वयं का फाइल फॉर्मेट द्वारा करता है। Thunderbird प्रत्येक ईमेल फ़ोल्डर (जैसे, इनबॉक्स, सेंट, ट्रैश) के लिए एक .mbox फ़ाइल बनाता है, और इन फ़ाइलों को उपयोगकर्ता की प्रोफ़ाइल डायरेक्टरी में संग्रहीत करता है। प्रत्येक फ़ाइल में उस फ़ोल्डर के सभी संदेश एक साथ जुड़े रूप में होते हैं।

Aspose.Email for .NET Thunderbird .mbox फ़ाइलों से संदेश पढ़ने के लिए APIs प्रदान करता है MboxrdStorageReader क्लास जो डेवलपर्स को सक्षम बनाता है:

  • संदेशों को क्रमिक रूप से खोलें और पढ़ें, एक-एक करके
  • विषय, प्रेषक, प्राप्तकर्ता, तिथि आदि जैसे मेटाडाटा प्राप्त करें, पूर्ण सामग्री लोड किए बिना
  • अद्वितीय पहचानकर्ता (EntryId) का उपयोग करके व्यक्तिगत संदेश निकालें
  • एन्कोडिंग, TNEF अटैचमेंट्स, और फॉर्मेटिंग को संरक्षित रखें
  • बड़े आर्काइव पर बेहतर प्रदर्शन के लिए फ़ाइलों को असिंक्रोनस रूप से पढ़ें

MBOX फ़ाइलों को सिंक्रोनस रूप से पढ़ें

Mozilla Thunderbird मेल स्टोरेज फ़ाइल से संदेश पढ़ें। यह लेख दिखाता है कि थंडरबर्ड ईमेल स्टोरेज से संदेश कैसे पढ़ें:

  1. FileStream में Thunderbird स्टोरेज फ़ाइल खोलें।
  2. का एक इंस्टेंस बनाएं MboxrdStorageReader class और ऊपर दिया गया स्ट्रीम कंस्ट्रक्टर को पास करें।
  3. कॉल करें ReadNextMessage() पहला संदेश प्राप्त करने के लिए।
  4. उसी का उपयोग करें ReadNextMessage() सभी संदेश पढ़ने के लिए while लूप में।
  5. सभी स्ट्रीम बंद करें।

निम्नलिखित कोड स्निपेट दिखाता है कि 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();

MBOX फ़ाइलों को असिंक्रोनस रूप से पढ़ें

बड़ी MBOX फ़ाइलों को प्रोसेस करते समय प्रदर्शन और प्रतिक्रिया समय बढ़ाने के लिए, Aspose.Email for .NET असिंक्रोनस MBOX रीडिंग प्रदान करता है CreateReaderAsync मेथड। यह सुविधा विशेष रूप से उन अनुप्रयोगों में उपयोगी है जो बड़े ईमेल आर्काइव संभालते हैं या बैकग्राउंड थ्रेड्स या वेब सर्विसेज में I/O-गहन ऑपरेशन्स चलाते हैं। नीचे दिया गया कोड नमूना Aspose.Email स्टोरेज रीडर का उपयोग करके MBOX फ़ाइल से असिंक्रोनस रूप से ईमेल संदेश पढ़ने को दर्शाता है:

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

पेजिनेशन समर्थन के साथ बैच में ईमेल संदेश पढ़ें

मेलबॉक्स फ़ाइलों में संग्रहीत संदेशों तक पेजिनेटेड एक्सेस प्राप्त करें। यह सुविधा डेवलपर्स को बड़े ईमेल आर्काइव को छोटे हिस्सों में संदेश प्राप्त करके अधिक कुशलता से प्रोसेस करने में सक्षम बनाती है - प्रदर्शन में सुधार और मेमोरी लोड कम करती है। निम्नलिखित मेथड्स का उपयोग करें MboxStorageReader क्लास:

  • EnumerateMessages(int startIndex, int count) - निर्दिष्ट इंडेक्स से शुरू होकर और दिए गए काउंट द्वारा सीमित MailMessage इंस्टेंसेस का एक enumerable संग्रह लौटाता है।

  • EnumerateMessageInfo(int startIndex, int count) - केवल मेटाडाटा वाले MboxMessageInfo ऑब्जेक्ट्स का एक enumerable संग्रह लौटाता है, जिसे इंडेक्स और काउंट द्वारा पेज किया जाता है।

नीचे दिया गया कोड नमूना दर्शाता है कि कैसे एक मेल आर्काइव से संदेशों की एक विशिष्ट रेंज को पढ़ा जा सकता है, प्रारंभिक इंडेक्स और बैच आकार को परिभाषित करके। उदाहरण में, यह मेथड इंडेक्स 0 से शुरू होकर 10 संदेश प्राप्त करता है।

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 फ़ाइलों को पढ़ने के लिए लोड करते समय पसंदीदा टेक्स्ट एन्कोडिंग सेट करें

एन्कोडिंग विकल्प उपलब्ध है MboxrdStorageReader class. यह mbox फ़ाइल को लोड करने के लिए अतिरिक्त विकल्प प्रदान करता है और सुनिश्चित करता है कि एन्कोडेड सामग्री वाले संदेशों को सही तरीके से पढ़ा और प्रोसेस किया जा सके। निम्नलिखित कोड स्निपेट दर्शाता है कि आप अपनी आवश्यकता को पूरा करने वाली टेक्स्ट एन्कोडिंग कैसे सेट कर सकते हैं:

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

MBOX फ़ाइलों से कुल संदेशों की संख्या प्राप्त करें

यह MboxrdStorageReader class एक MBox फ़ाइल में उपलब्ध आइटमों की संख्या पढ़ने की क्षमता प्रदान करता है। इसे ऐसी फ़ाइल को प्रोसेस करते समय गतिविधि की प्रगति दिखाने वाले एप्लिकेशन विकसित करने के लिए उपयोग किया जा सकता है।

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

वर्तमान संदेश का आकार प्राप्त करें

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