संदेश लोडिंग और सहेजना

Contents
[ ]

ईमेल संदेशों का लोडिंग और सहेजना

फ़ाइल फ़ॉर्मेट पहचानें

Aspose.Email API प्रदान करता है कि दिया गया संदेश फ़ाइल का फ़ॉर्मेट पहचानने की क्षमता। DetectFileFormat विधि FileFormatUtil यह क्लास इस कार्य को करने के लिए उपयोग की जा सकती है। निम्न क्लास और मेथड्स लोड की गई फ़ाइल फ़ॉर्मेट को पहचानने के लिए उपयोग किए जा सकते हैं।

निम्न कोड स्निपेट दिखाता है कि फ़ाइल फ़ॉर्मेट कैसे पहचाना जाए।

ईमेल संदेश लोड करें

विशिष्ट लोड विकल्पों के साथ संदेश लोड करने के लिए, Aspose.Email प्रदान करता है LoadOptions क्लास जिसका उपयोग निम्न प्रकार से किया जा सकता है:

लोडिंग के दौरान एम्बेडेड संदेश फ़ॉर्मेट को संरक्षित रखें

ईमेल संदेशों को सहेजें और बदलें

Aspose.Email किसी भी संदेश प्रकार को अन्य फ़ॉर्मेट में आसानी से बदल सकता है। इस सुविधा को प्रदर्शित करने के लिए, इस लेख का कोड डिस्क से तीन प्रकार के संदेश लोड करता है और उन्हें अन्य फ़ॉर्मेट में वापस सहेजता है। बेस क्लास SaveOptions और इन क्लासों को EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions सहेजते समय अतिरिक्त सेटिंग्स के लिए MailMessage इनका उपयोग संदेशों को अन्य फ़ॉर्मेट में सहेजने के लिए किया जा सकता है। लेख दिखाता है कि इन क्लासों का उपयोग करके नमूना ईमेल को कैसे सहेजा जाए:

  • EML फ़ॉर्मेट।
  • Outlook MSG।
  • MHTML फ़ॉर्मेट।
  • HTML फ़ॉर्मेट।

ईमेल संदेश को लोड और सहेजें

निम्न कोड स्निपेट दर्शाता है कि EML संदेश को कैसे लोड किया जाए और उसी फ़ॉर्मेट में डिस्क पर सहेजा जाए।

मूल बाउंड्री को संरक्षित रखते हुए ईमेल संदेश को लोड और सहेजें

निम्न कोड स्निपेट दिखाता है कि EML को कैसे लोड करें और मूल बाउंड्री को संरक्षित रखते हुए EML के रूप में सहेजें।

TNEF अटेचमेंट्स को संरक्षित रखते हुए EML सहेजना

निम्न कोड स्निपेट दर्शाता है कि EML को कैसे सहेजा जाए जबकि TNEF अटेचमेंट्स को संरक्षित रखा जाए।

EML को MSG में सहेजें

निम्न कोड स्निपेट दर्शाता है कि EML संदेश को लोड करके इसे उपयुक्त विकल्प का उपयोग करके MSG में कैसे बदला जाए SaveOptions.

EML को MSG में तिथियों को संरक्षित रखते हुए सहेजें

यह MsgSaveOptions क्लास आपको स्रोत संदेश को Outlook मैसेज फ़ाइल (MSG) के रूप में तिथियों को संरक्षित रखकर सहेजने की अनुमति देता है। नीचे दिया गया कोड स्निपेट दिखाता है कि तिथियों को संरक्षित रखते हुए MSG के रूप में कैसे सहेजें।

EML को MHTML के रूप में सहेजें

विभिन्न MHTML विकल्पों का उपयोग करके इच्छित परिणाम प्राप्त किए जा सकते हैं। निम्न कोड स्निपेट दिखाता है कि EML संदेश को कैसे लोड किया जाए MailMessage और इसे MHTML में UTC प्रणाली में संदेश तिथि के साथ बदलें।

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);

// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
    mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}

EML से सहेजते समय MHT हेडर को ग्लोबली फ़ॉर्मेट करें

Aspose.Email के साथ, आप MHT हेडर के लिए ग्लोबल फ़ॉर्मेटिंग विकल्पों का उपयोग कर सकते हैं। ग्लोबल विकल्प सभी के लिए MHT हेडर की सामान्य फ़ॉर्मेटिंग सेट करते हैं। MhtSaveOptions इंस्टैंस के। यह सुविधा प्रत्येक इंस्टैंस के लिए फ़ॉर्मेटिंग सेट करने से बचाने के लिए डिज़ाइन की गई है। MhtSaveOptions.

निम्न मेथड्स का उपयोग करें GlobalFormattingOptions क्लास और नीचे दिया गया कोड नमूना MHT हेडर के फ़ॉर्मेटिंग को सेट करने के लिए:

  • setPageHeaderFormat(String value) - PageHeaderFormat – HeaderFormattingOptions के इंस्टैंस के लिए यदि DefaultPageHeaderFormat सेट नहीं है।
  • setHeaderFormat(String value) - HeaderFormat – HeaderFormattingOptions के इंस्टैंस के लिए यदि DefaultHeaderFormat सेट नहीं है।
  • setBeforeHeadersFormat(String value) - BeforeHeadersFormat – HeaderFormattingOptions के इंस्टैंस के लिए यदि BeforeHeadersFormat सेट नहीं है।
  • setAfterHeadersFormat(String value) - AfterHeadersFormat – HeaderFormattingOptions के इंस्टैंस के लिए यदि AfterHeadersFormat सेट नहीं है।
// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();

वैकल्पिक सेटिंग्स के साथ EML को MHTML में बदलें

यह MhtSaveOptions क्लास MHTML फ़ॉर्मेट में ईमेल संदेश सहेजने के लिए अतिरिक्त विकल्प प्रदान करती है। एनेमरेटर MhtFormatOptions यह अतिरिक्त ईमेल जानकारी को आउटपुट MHTML में लिखना संभव बनाता है। निम्न अतिरिक्त फ़ील्ड्स लिखे जा सकते हैं:

  • WriteHeader - ईमेल हेडर को आउटपुट फ़ाइल में लिखता है।
  • WriteOutlineAttachments - आउटलाइन अटेचमेंट्स को आउटपुट फ़ाइल में लिखता है।
  • WriteCompleteEmailAddress - पूर्ण ईमेल पता आउटपुट फ़ाइल में लिखता है।
  • NoEncodeCharacters - अक्षरों का कोई ट्रांसफ़र एन्कोडिंग उपयोग नहीं किया जाना चाहिए।
  • HideExtraPrintHeader - आउटपुट फ़ाइल के शीर्ष से अतिरिक्त प्रिंट हेडर को छुपाता है।
  • WriteCompleteToEmailAddress - प्राप्तकर्ता का पूर्ण ईमेल पता आउटपुट फ़ाइल में लिखता है।
  • WriteCompleteFromEmailAddress - प्रेषक का पूर्ण ईमेल पता आउटपुट फ़ाइल में लिखता है।
  • WriteCompleteCcEmailAddress - किसी भी कार्बन कॉपी (Cc) प्राप्तकर्ता के पूर्ण ईमेल पते आउटपुट फ़ाइल में लिखता है।
  • WriteCompleteBccEmailAddress - किसी भी ब्लाइंड कार्बन कॉपी (Bcc) प्राप्तकर्ता का पूर्ण ईमेल पता आउटपुट फ़ाइल में लिखता है।
  • RenderCalendarEvent - कैलेंडर इवेंट से टेक्स्ट को आउटपुट फ़ाइल में लिखता है।
  • SkipByteOrderMarkInBody - Byte Order Mark (BOM) बाइट्स को आउटपुट फ़ाइल में लिखता है।
  • RenderVCardInfo - VCard AlternativeView से टेक्स्ट को आउटपुट फ़ाइल में लिखता है।
  • DisplayAsOutlook - From हेडर प्रदर्शित करता है।
  • RenderTaskFields - विशिष्ट टास्क फ़ील्ड्स को आउटपुट फ़ाइल में लिखता है।
  • कोई नहीं - कोई सेटिंग निर्दिष्ट नहीं।

निम्न कोड स्निपेट दर्शाता है कि वैकल्पिक सेटिंग्स के साथ EML फ़ाइलों को MHTML में कैसे बदला जाए।

MHTML में बदलते समय कैलेंडर इवेंट्स रेंडर करें

यह MhtFormatOptions.RenderCalendarEvent कैलेंडर इवेंट्स को आउटपुट MTHML में रेंडर करता है। नीचे दिया गया कोड स्निपेट दिखाता है कि MHTML में बदलते समय कैलेंडर इवेंट्स को कैसे रेंडर किया जाए।

इंलाइन इमेजेस के बिना ईमेल को MHT में एक्सपोर्ट करें

कस्टमाइज़्ड टाइमज़ोन के साथ ईमेल को MHT में निर्यात करना

MailMessage class प्रदान करता है setTimeZoneOffset MHT में निर्यात करते समय कस्टमाइज़्ड टाइमज़ोन सेट करने की प्रॉपर्टी। निम्नलिखित कोड स्निपेट आपको दिखाता है कि कस्टमाइज़्ड टाइमज़ोन के साथ ईमेल को MHT में कैसे निर्यात करें।

MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());

// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);

MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);

ईमेल को EML में निर्यात करना

निम्नलिखित कोड स्निपेट आपको दिखाता है कि ईमेल को EML में कैसे निर्यात करें।

ईमेल को HTML के रूप में सहेजें

यह HtmlSaveOptions क्लास आपको संदेश बॉडी को HTML में निर्यात करने की अनुमति देती है। निम्नलिखित कोड स्निपेट आपको दिखाता है कि संदेश को HTML के रूप में कैसे सहेजें।

ईमेल संदेश को HTML में रिसोर्सेज के रिलेटिव पाथ के साथ सहेजें

ईमेल संदेशों को HTML फ़ॉर्मेट में निर्यात करते समय, आप ईमेल संसाधनों को रिलेटिव पाथ के साथ सहेजना चुन सकते हैं। यह सुविधा आउटपुट HTML फ़ाइल में संसाधनों के लिंक को अधिक लचीलापन देती है, जिससे विभिन्न सिस्टम पर सहेजे गए ईमेल को साझा और प्रदर्शित करना आसान हो जाता है। HtmlSaveOptions.UseRelativePathToResources प्रॉपर्टी संसाधनों को रिलेटिव पाथ के साथ सहेजने की सुविधा देती है। डिफ़ॉल्ट प्रॉपर्टी मान false है (संसाधन एब्सोल्यूट पाथ से सहेजे जाते हैं)। जब true सेट किया जाता है, तो संसाधन रिलेटिव पाथ के साथ सहेजे जाते हैं। रिलेटिव पाथ वाली HTML फ़ाइलें अधिक पोर्टेबल होती हैं और होस्टिंग वातावरण की फ़ाइल संरचना से स्वतंत्र रूप से सही ढंग से देखी जा सकती हैं। आप आवश्यकताओं के अनुसार एब्सोल्यूट और रिलेटिव पाथ में से चुन सकते हैं। आप प्रॉपर्टी का उपयोग करके संसाधनों के लिए कस्टम पाथ परिभाषित कर सकते हैं। ResourceHtmlRenderingHandler इवेंट।

संसाधनों को डिफ़ॉल्ट रिलेटिव पाथ के साथ सहेजें

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);

msg.save("target.html", htmlSaveOptions);

इस केस में, संसाधन [html file name].files फ़ोल्डर में .html फ़ाइल के समान पाथ में सहेजे जाएंगे और HTML संसाधनों को रिलेटिव पाथ के माध्यम से संदर्भित करेगा।

संसाधनों को एब्सोल्यूट पाथ के साथ सहेजें

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

msg.save("target.html", htmlSaveOptions);

पहले केस की तरह, डिफ़ॉल्ट रूप से संसाधन [html file name].files फ़ोल्डर में सहेजे जाएंगे, लेकिन HTML संसाधनों को एब्सोल्यूट पाथ का उपयोग करके संदर्भित करेगा।

ResourceHtmlRenderingHandler इवेंट का उपयोग कर कस्टम रिलेटिव पाथ

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    @Override
    public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
        if (sender instanceof AttachmentBase) {
            AttachmentBase attachment = (AttachmentBase) sender;
            // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
            args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
        }
    }
});

msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);

का उपयोग करके ResourceHtmlRenderingHandler इवेंट, आप संसाधनों के लिए कस्टम रिलेटिव या एब्सोल्यूट पाथ सेट कर सकते हैं। पाथ को कस्टमाइज़ करते समय ResourceHtmlRenderingHandler इवेंट हैंडलर, और चूँकि UseRelativePathToResources यदि true सेट किया गया है, तो आपको एक रिलेटिव पाथ असाइन करना चाहिए PathToResourceFile सही रेफ़रेंसिंग सुनिश्चित करने के लिए प्रॉपर्टी।

HTML में कन्वर्ट करते समय संदेश में कस्टम आइकन संरक्षित रखें

कभी-कभी संदेश में इनलाइन अटैचमेंट होते हैं, जो संदेश बॉडी में आइकन छवियों के रूप में प्रदर्शित होते हैं। ऐसे संदेशों को HTML में बदलते समय समस्याएँ उत्पन्न हो सकती हैं, क्योंकि आइकन छवियों को खो दिया जाता है। इसका कारण यह है कि अटैचमेंट के आइकन सीधे संदेश में नहीं रखे गए होते हैं।

Aspose.Email उपयोगकर्ता संदेश को HTML में परिवर्तित करते समय अटैचमेंट के आइकन को कस्टमाइज़ कर सकते हैं। इसके लिए, HtmlSaveOptions.ResourceHtmlRendering इवेंट का उपयोग ईमेल संदेश को HTML फ़ाइल के रूप में सहेजते समय संसाधन फ़ाइलों (जैसे अटैचमेंट) की रेंडरिंग को कस्टमाइज़ करने के लिए किया जाता है। नीचे दिए गए कोड नमूने में, इवेंट हैंडलर अटैचमेंट के कंटेंट टाइप के आधार पर संसाधन फ़ाइलों (आइकन) का पथ गतिशील रूप से सेट करता है। इससे फ़ाइल प्रकार के अनुसार HTML आउटपुट में संसाधनों की कस्टम रेंडरिंग संभव होती है।


 HtmlSaveOptions options = new HtmlSaveOptions();

options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {

   @Override

   public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {

        AttachmentBase attachment = (AttachmentBase) sender;

        e.setCaption(attachment.getContentType().getName());

       if (attachment.getContentType().getName().endsWith(".pdf")) {

            e.setPathToResourceFile("pdf_icon.png");

       } else if (attachment.getContentType().getName().endsWith(".docx")) {

            e.setPathToResourceFile("word_icon.jpg");

       } else if (attachment.getContentType().getName().endsWith(".jpg")) {

            e.setPathToResourceFile("jpeg_icon.png");

       } else {

            e.setPathToResourceFile("not_found_icon.png");

       }

   }

});

options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);

String fileName = "message.msg";

MailMessage mailMessage = MailMessage.load(fileName);

mailMessage.save("fileName.html", options);

EML को HTML के रूप में सहेजते समय समय और टाइमज़ोन सेट करना

Aspose.Email उपयोगकर्ता समय और टाइमज़ोन डिस्प्ले फ़ॉर्मेट सेट कर सकते हैं HtmlSaveOptions. यह HeadersFormattingOptions क्लास MailMessage को MHTML या HTML फ़ॉर्मेट में सहेजते समय हेडर फ़ॉर्मेटिंग विकल्प निर्दिष्ट करने की अनुमति देती है। निम्नलिखित मेथड्स HtmlFormatOptions क्लास आउटपुट फ़ाइल में प्रदर्शित होने वाले फ़ील्ड्स को निर्दिष्ट करती है:

  • RenderCalendarEvent - दर्शाता है कि कैलेंडर इवेंट से पाठ को आउटपुट MHTML में लिखा जाना चाहिए।
  • RenderVCardInfo - दर्शाता है कि VCard AlternativeView से पाठ को आउटपुट HTML में लिखा जाना चाहिए।

निम्नलिखित कोड नमूना दर्शाता है कि EML को HTML में सहेजते समय समय और टाइमज़ोन कैसे सेट करें:

MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");

संसाधनों को एम्बेड किए बिना HTML के रूप में सहेजना

संदेश को Outlook टेम्पलेट (.oft) फ़ाइल के रूप में सहेजना

निम्नलिखित कोड स्निपेट दर्शाता है कि संदेश को Outlook टेम्पलेट (.oft) फ़ाइल के रूप में कैसे सहेजें।