Thunderbird के साथ प्रोग्रामिंग

MBOX से संदेश पढ़ें

Mozilla Thunderbird Thunderbird एक ओपन-सोर्स, क्रॉस-प्लेटफ़ॉर्म ईमेल क्लाइंट है, जिसे Mozilla Foundation ने विकसित किया है। यह अपने स्वयं के फ़ाइल संरचना में ईमेल संग्रहीत करता है, जिसमें संदेश निर्देशांक और सबफ़ोल्डर को स्वामित्व फ़ाइल फ़ॉर्मेट के माध्यम से प्रबंधित किया जाता है। Aspose.Email Thunderbird मेल स्टोरेज संरचनाओं के साथ काम कर सकता है। MboxrdStorageReader class डेवलपर्स को Mozilla Thunderbird के मेल स्टोरेज फ़ाइल से संदेश पढ़ने देता है। यह लेख दिखाता है कि Thunderbird ईमेल स्टोरेज से संदेश कैसे पढ़ें:

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

निम्नलिखित कोड स्निपेट दिखाता है कि Thunderbird मेल स्टोरेज से सभी संदेश कैसे पढ़ें।

//Getting Marker information while reading messages from Mbox storage file
try (FileInputStream stream = new FileInputStream(dataDir + "Outlook.pst")) {
    MboxLoadOptions lo = new MboxLoadOptions();
    lo.setLeaveOpen(false);
    try (MboxrdStorageReader reader = new MboxrdStorageReader(stream, lo)) {
        MailMessage msg;
        String[] fromMarker = {null};
        while ((msg = reader.readNextMessage(/* out */fromMarker)) != null) {
            System.out.println(fromMarker[0]);
        }
    }
}

MBOX से संदेश पढ़ते समय लोड विकल्प कॉन्फ़िगर करें

Aspose.Email API MBOX फ़ाइल से संदेश पढ़ते समय निम्नलिखित हेरफ़ेर की अनुमति देती है:

MBOX से PST में संदेश को TNEF अटैचमेंट को संरक्षित रखते हुए परिवर्तित करें

EmlLoadOptions emlLoadOptions = new EmlLoadOptions();
emlLoadOptions.setPreserveTnefAttachments(true);
MailStorageConverter.setMboxMessageOptions(emlLoadOptions);
// Convert messages from mbox to pst preserving tnef attachments.
PersonalStorage storage = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");

MailStorageConverter.MboxMessageOptions() प्रॉपर्टी - Mbox संग्रह का विश्लेषण करते समय ईमेल लोड विकल्प प्राप्त या सेट करती है।

TNEF अटैचमेंट को संरक्षित रखते हुए संदेश पढ़ें

MboxrdStorageReader reader = new MboxrdStorageReader("Input.mbox", new MboxLoadOptions());
// Read messages preserving tnef attachments.
EmlLoadOptions emlLoadOptions = new EmlLoadOptions();
emlLoadOptions.setPreserveTnefAttachments(true);
MailMessage eml = reader.readNextMessage(emlLoadOptions);

MboxrdStorageReader.readNextMessage(EmlLoadOptions options) method - Mbox स्टोरेज से संदेश पढ़ते समय EmlLoadOptions पैरामीटर विकल्प निर्दिष्ट करता है।

TNEF अटैचमेंट को संरक्षित रखते हुए संदेशों की enumeration

EmlLoadOptions emlLoadOptions = new EmlLoadOptions();
emlLoadOptions.setPreserveTnefAttachments(true);
// Enumerate messages preserving tnef attachments.
for (MailMessage message : reader.enumerateMessages(emlLoadOptions)) {
    // do something
}

MboxrdStorageReader.enumerateMessages(EmlLoadOptions options) method - Mbox स्टोरेज से संदेश पढ़ते समय EmlLoadOptions निर्दिष्ट करता है।

पहचानकर्ताओं द्वारा MBOX से संदेश निकालें

कभी-कभी पहचानकर्ताओं द्वारा चयनित संदेशों को निकालना आवश्यक होता है। उदाहरण के लिए, आपका एप्लिकेशन डेटाबेस में पहचानकर्ता संग्रहीत करता है और मांग पर संदेश निकालता है। यह प्रत्येक बार पूरे स्टोरेज को पार किए बिना विशिष्ट संदेश खोजने का कुशल तरीका है। MBOX फ़ाइलों के लिए इस फीचर को लागू करने हेतु, Aspose.Email निम्नलिखित मेथड्स और क्लासेज प्रदान करता है:

  • MboxMessageInfo class जिसमें EntryId property - एंट्री पहचानकर्ता प्राप्त करता है।
  • enumerateMessageInfo() विधि MboxStorageReader class - इटेरेटर को उजागर करता है, जो स्टोरेज में संदेशों के इटरशन का समर्थन करता है।
  • extractMessage(String id) विधि MboxStorageReader class - MBOX से संदेश प्राप्त करता है।

नीचे दिया गया कोड उदाहरण दिखाता है कि पहचानकर्ता द्वारा MBOX से संदेशों को कैसे निकालें:

MboxStorageReader reader = MboxStorageReader.createReader("my.mbox", new MboxLoadOptions());

for (MboxMessageInfo msgInfo : reader.enumerateMessageInfo()) {
    MailMessage eml = reader.extractMessage(msgInfo.getEntryId(), new EmlLoadOptions());
}

नोट: संदेश ID स्टोरेज फ़ाइल के भीतर अद्वितीय होता है। IDs Aspose.Email द्वारा बनाई जाती हैं और उन्हें अन्य थर्ड-पार्टी MBOX प्रोसेसिंग लाइब्रेरीज़ या ऐप्स में उपयोग नहीं किया जा सकता।

MBOX फ़ाइलों में ईमेल फ़िल्टर करना और खोज करना

Aspose.Email for Java क्वेरी का उपयोग करके MBOX फ़ाइलों के भीतर संदेशों को फ़िल्टर या खोजने की क्षमता प्रदान करता है। इससे आप केवल विशिष्ट मानदंडों से मेल खाने वाले संदेशों को पुनः प्राप्त कर सकते हैं। इस प्रकार, बड़े MBOX फ़ाइलों के साथ काम करते समय आप एप्लिकेशन के प्रदर्शन और उपयोगिता में सुधार कर सकते हैं।

नीचे दिया गया कोड उदाहरण दिखाता है कि निम्नलिखित मेथड्स को लागू करके इस फीचर को कैसे लागू किया जाए:

  • enumerateMessages(MailQuery query) - निर्दिष्ट क्वेरी से मेल खाने वाले MailMessage इंस्टेंस की एक एनेरेबल कलेक्शन लौटाता है।

  • enumerateMessageInfo(MailQuery query) - निर्दिष्ट क्वेरी से मेल खाने वाले MboxMessageInfo इंस्टेंस की एक एनेरेबल कलेक्शन लौटाता है।

MboxStorageReader reader = MboxStorageReader.createReader("input.mbox", new MboxLoadOptions());
MailQueryBuilder mqb = new MailQueryBuilder();
mqb.getSubject().contains("Project Update");
mqb.getSentDate().before(new Date());

for (MailMessage message : reader.enumerateMessages(mqb.getQuery())) {
    System.out.println("Subject: " + message.getSubject());
}

MBOX फ़ाइलों से पेजिनेटेड संदेश पुनः प्राप्ति

Aspose.Email for Java MBOX फ़ाइलों से पेजिनेटेड संदेश पुनः प्राप्ति का समर्थन करता है। यह फीचर छोटे बैच में संदेशों को पुनः प्राप्त करके बड़े MBOX फ़ाइलों को कुशलता से प्रोसेस करने, मेमोरी उपयोग को कम करने और प्रदर्शन में सुधार करने में मदद करता है।

नीचे दिया गया कोड उदाहरण दिखाता है कि निम्नलिखित मेथड्स को लागू करके इस फीचर को कैसे लागू किया जाए:

  • enumerateMessages(int startIndex, int count) - दिए गए इंडेक्स से शुरू करके निर्दिष्ट संख्या में MailMessage इंस्टेंस पुनः प्राप्त करता है।

  • enumerateMessageInfo(int startIndex, int count) - दिए गए इंडेक्स से शुरू करके निर्दिष्ट संख्या में MboxMessageInfo इंस्टेंस पुनः प्राप्त करता है।

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

for (MailMessage message : reader.enumerateMessages(startIndex, count)) {
    System.out.println("Subject: " + message.getSubject());
}

संदेश लिखना

यह MboxrdStorageWriter class नई संदेशों को Thunderbird के मेल स्टोरेज फ़ाइल में लिखने की सुविधा प्रदान करता है। संदेश लिखने के लिए:

  1. FileStream में Thunderbird स्टोरेज फ़ाइल खोलें।
  2. का एक इंस्टेंस बनाएं MboxrdStorageWriter class और ऊपर दिया गया स्ट्रीम कंस्ट्रक्टर को पास करें।
  3. उपयोग करके नया संदेश तैयार करें MailMessage क्लास।
  4. कॉल करें WriteMessage() method और ऊपर दिया गया पास करें MailMessage Thunderbird स्टोरेज में संदेश जोड़ने के लिए इंस्टेंस।
  5. सभी स्ट्रीम बंद करें।

निम्नलिखित कोड स्निपेट दिखाता है कि Thunderbird के मेल स्टोरेज में संदेश कैसे लिखे जाते हैं।

//Getting marker information while writing messages to Mbox storage file
try (FileOutputStream writeStream = new FileOutputStream(dataDir + "inbox")) {
    try (MboxrdStorageWriter writer = new MboxrdStorageWriter(writeStream, false)) {
        MailMessage msg = MailMessage.load(dataDir + "Message.msg");
        String[] fromMarker = {null};
        writer.writeMessage(msg, fromMarker);
        System.out.println(fromMarker[0]);
    }
}

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

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

MboxLoadOptions lo = new MboxLoadOptions();
try (MboxrdStorageReader reader = new MboxrdStorageReader("inbox.dat", lo)) {
    System.out.println("Total number of messages in Mbox file: " + reader.getTotalItemsCount());
}

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

FileInputStream stream = new FileInputStream(dataDir + "ExampleMbox.mbox");
MboxLoadOptions lo = new MboxLoadOptions();
try (MboxrdStorageReader reader = new MboxrdStorageReader(stream, lo)) {
    MailMessage msg = null;
    while ((msg = reader.readNextMessage()) != null) {
        //returns the number of bytes read
        long currentDataSize = reader.getCurrentDataSize();
        System.out.println("Bytes read: " + currentDataSize);
    }
}

Mbox फ़ाइलें लोड करते समय वांछित टेक्स्ट एन्कोडिंग सेट करें

यह setPreferredTextEncoding(Charset value) विधि MboxLoadOptions class संदेशों के लिए वांछित एन्कोडिंग को सेट या प्राप्त करता है। निर्दिष्ट लोड विकल्पों के साथ Mbox फ़ाइल के लिए एक रीडर बनाएं और आपके एन्कोडेड सामग्री वाले संदेश सही ढंग से पढ़े और प्रोसेस किए जाएंगे। निम्नलिखित कोड उदाहरण दिखाता है कि इस फीचर को प्रोजेक्ट में कैसे लागू किया जाए:

MboxLoadOptions lo = new MboxLoadOptions();
lo.setPreferredTextEncoding(Charset.forName("utf-8"));
MboxrdStorageReader reader = new MboxrdStorageReader("sample.mbox", lo);
MailMessage message = reader.readNextMessage();

छोटे भागों में Mbox स्टोरेज विभाजित करें

Aspose.Email निम्नलिखित घटकों को प्रदान करता है, जो Mbox स्टोरेज प्रोसेसिंग पर अधिक नियंत्रण प्रदान करने के लिए डिज़ाइन किए गए हैं, जिससे आप बड़े फ़ाइलों को संभालने योग्य भागों में विभाजित कर सकते हैं और प्रक्रिया के दौरान कस्टम क्रियाएँ लागू कर सकते हैं:

  • MboxStorageReader.SplitInto(long chunkSize, String outputPath) method - आपको Mbox स्टोरेज को छोटे भागों में विभाजित करने की सुविधा देता है, जिससे बड़े Mbox फ़ाइलों को प्रबंधित और प्रोसेस करना आसान हो जाता है।

MboxStorageReader.SplitInto(long chunkSize, String outputPath, String partFileNamePrefix) पिछले मेथड का एक variation है, यह आपको विभाजित Mbox फ़ाइल नामों के लिए एक कस्टम प्रीफ़िक्स निर्दिष्ट करने की अनुमति भी देता है।

MboxStorageReader.setEmlCopyingEventHandler इवेंट यह इवेंट तब होता है जब ईमेल को नई Mbox फ़ाइल में कॉपी किया जाना है। आप ईमेल प्रोसेस होने से पहले क्रियाएँ कस्टमाइज़ कर सकते हैं।

MboxStorageReader.setEmlCopiedEventHandler इवेंट यह इवेंट तभी होता है जब ईमेल को नई Mbox फ़ाइल में कॉपी किया जाता है। आप ईमेल पर पोस्ट-प्रोसेसिंग क्रियाएं कर सकते हैं।

MboxStorageReader.setMboxFileCreatedEventHandler इवेंट यह इवेंट तब होता है जब नया Mbox फ़ाइल बनाई जाती है। आप इस इवेंट को संभालकर फ़ाइल निर्माण पर प्रतिक्रिया दे सकते हैं।

MboxStorageReader.setMboxFileFilledEventHandler इवेंट यह तब होता है जब एक नई Mbox फ़ाइल ईमेल्स से भर दी जाती है। आप फ़ाइल के ईमेल से भरे जाने पर प्रतिक्रिया दे सकते हैं।

NewStorageEventHandler(Object sender, NewStorageEventArgs e) एक डेलीगेट को दर्शाता है जो नई स्टोरेज फ़ाइल बन जाने या प्रोसेस होने के बाद होने वाले इवेंट्स को संभालता है।

MimeItemCopyEventHandler(Object sender, MimeItemCopyEventArgs e) Mime आइटम्स की कॉपी से संबंधित इवेंट्स को संभालने के लिए एक डेलीगेट को दर्शाता है, आमतौर पर उन स्थितियों में जहाँ एक MailMessage ऑब्जेक्ट को एक स्टोरेज से दूसरे में कॉपी किया जाता है।

NewStorageEventArgs उन इवेंट्स में उपयोग किए जाने वाले आर्ग्यूमेंट्स को दर्शाता है जो एक नई स्टोरेज फ़ाइल बन जाने के बाद या प्रोसेस होने के बाद उठाए जाते हैं।

MimeItemCopyEventArgs एक इवेंट आर्ग्यूमेंट को दर्शाता है जो एक MailMessage ऑब्जेक्ट को एक स्टोरेज से दूसरे में कॉपी करने से संबंधित है, चाहे कॉपी शुरू होने से पहले या पूरी होने के बाद।

नीचे दिया गया कोड उदाहरण दिखाता है कि Mbox फ़ाइलों के साथ कैसे इंटरैक्ट करें, इन फ़ाइलों से संबंधित इवेंट्स को संभालें, और Mbox स्टोरेज को छोटे भागों में विभाजित करने जैसी ऑपरेशन्स करें, जबकि संदेश संख्या और भाग संख्या को ट्रैक रखें।

messageCount = 0;
partCount = 0;

// Create an instance of MboxrdStorageReader
MboxLoadOptions lo = new MboxLoadOptions();
lo.setLeaveOpen(false);
MboxrdStorageReader mbox = new MboxrdStorageReader("my.mbox", lo);

// Subscribe to events
mbox.setMboxFileCreatedEventHandler(new NewStorageEventHandler() {
    public void invoke(Object sender, NewStorageEventArgs e) {
        System.out.println("New Mbox file created: " + e.getFileName());
        partCount++;
    }
});

mbox.setMboxFileFilledEventHandler(new NewStorageEventHandler() {
    public void invoke(Object sender, NewStorageEventArgs e) {
        System.out.println("Mbox file filled with messages: " + e.getFileName());
    }
});

mbox.setEmlCopiedEventHandler(new MimeItemCopyEventHandler() {
    public void invoke(Object sender, MimeItemCopyEventArgs e) {
        System.out.println("Message added to new Mbox file. Subject: " + e.getItem().getSubject());
        messageCount++;
    }
});

// Split the Mbox storage into smaller parts
mbox.splitInto(10000000, testOutPath, "Prefix");

// Output the final messageCount and partCount
System.out.println("Total messages added: " + messageCount);
System.out.println("Total parts created: " + partCount);