html - एचटीएमएल ईमेल में छवि एम्बेडिंग




image oracle (6)

मैं एम्बेडेड gif छवियों के साथ एक मल्टीपार्ट / संबंधित एचटीएमएल ईमेल भेजने की कोशिश कर रहा हूँ। यह ईमेल ओरेकल पीएल / एसक्यूएल का उपयोग करके उत्पन्न होता है। मेरे प्रयास विफल हुए हैं, छवि को लाल एक्स के रूप में दिखाया गया है (Outlook 2007 और याहू मेल में)

मैं कुछ समय के लिए एचटीएमएल ईमेल भेज रहा हूं, लेकिन मेरी आवश्यकताएं अब ईमेल में कई gif छवियों का उपयोग करने के लिए हैं। मैं इन्हें अपने वेब सर्वरों में से किसी एक पर संग्रहीत कर सकता हूं और उनसे लिंक कर सकता हूं, लेकिन कई उपयोगकर्ता ईमेल क्लाइंट स्वचालित रूप से उन्हें नहीं दिखाएंगे और उन्हें सेटिंग बदलने या उन्हें प्रत्येक ईमेल के लिए मैन्युअल रूप से डाउनलोड करने की आवश्यकता होगी।

तो, मेरे विचार छवि को एम्बेड करना है। मेरे प्रश्न हैं:

  1. मुझसे यहां क्या गलत हो रहा है?
  2. क्या एम्बेडेड सही दृष्टिकोण है?
  3. यदि मुझे अधिक से अधिक छवियों का उपयोग करने की आवश्यकता है तो कोई अन्य विकल्प? अनुलग्नक काम नहीं करेंगे, क्योंकि छवियां आम तौर पर लोगो और आइकन हैं जो संदेश के संदर्भ से समझ में नहीं आतीं। इसके अलावा, ईमेल के कुछ तत्व एक ऑनलाइन सिस्टम में लिंक हैं, इसलिए एक स्थिर पीडीएफ उत्पन्न करना और संलग्न करना काम नहीं करेगा (वैसे भी मेरे ज्ञान के लिए)।

स्निपेट:

MIME-Version: 1.0
To: [email protected]
BCC: [email protected]
From: [email protected]
Subject: Test
Reply-To: [email protected]
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"

--a1b2c3d4e3f2g1

content-type: text/html;

    <html>
    <head><title>My title</title></head>
    <body>
    <div style="font-size:11pt;font-family:Calibri;">
    <p><IMG SRC="cid:my_logo" alt="Logo"></p>

... more html here ...

</div></body></html> 

--a1b2c3d4e3f2g1

Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline

[base64 image data here]

--a1b2c3d4e3f2g1--

बहुत धन्यवाद।

बीटीडब्लू: हाँ, मैंने सत्यापित किया है कि बेस 64 डेटा सही है, क्योंकि मैं एचटीएमएल में छवि को एम्बेड कर सकता हूं (हेडर डेटा बनाने के लिए समान अहंकार उपयोग का उपयोग कर) और फ़ायरफ़ॉक्स / आईई में छवि देख सकता हूं।

मुझे यह भी ध्यान रखना चाहिए कि यह स्पैम के लिए नहीं है, ईमेल उन विशिष्ट ग्राहकों को भेजे जाते हैं जो इसे दैनिक उम्मीद कर रहे हैं। सामग्री डेटा संचालित है, और विज्ञापन नहीं है।


  1. इनलाइन छवियों के लिए आपको पूरी तरह से अनुपालन करने के लिए 3 सीमाओं की आवश्यकता है।

  2. सबकुछ multipart/mixed अंदर जाता है।

  3. फिर multipart/related अपने multipart/alternative और अपनी छवि अनुलग्नक हेडर को शामिल करने के लिए उपयोग करें।

  4. अंत में, multipart/mixed की अंतिम सीमा के अंदर अपने डाउनलोड करने योग्य अनुलग्नक शामिल करें।


इसे सीधे डालने का प्रयास करें, इस तरह आप ईमेल में विभिन्न स्थानों पर एकाधिक छवियां डाल सकते हैं।

<img src="data:image/jpg;base64,/*base64-data-string here*/" />

और इस पोस्ट को दूसरों के लिए उपयोगी रूप से बनाने के लिए: यदि आपके पास बेस 64-डेटा स्ट्रिंग नहीं है, तो आसानी से एक बनाएं: http://www.motobit.com/util/base64-decoder-encoder.asp छवि फ़ाइल से ।

ईमेल स्रोत कोड ऐसा कुछ दिखता है, लेकिन मैं वास्तव में आपको यह नहीं बता सकता कि वह सीमा क्या है:

 To: [email protected]
 Subject: ...
 Content-Type: multipart/related;
 boundary="------------090303020209010600070908"

This is a multi-part message in MIME format.
--------------090303020209010600070908
Content-Type: text/html; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <img src="cid:part1.06090408.01060107" alt="">
  </body>
</html>

--------------090303020209010600070908
Content-Type: image/png;
 name="moz-screenshot.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.06090408.01060107>
Content-Disposition: inline;
 filename="moz-screenshot.png"

[base64 image data here]

--------------090303020209010600070908--

// संपादित करें: ओह, मुझे बस एहसास है कि अगर आप थंडरबर्ड के साथ एक ईमेल लिखने के लिए मेरे पोस्ट से पहला कोड स्निपेट डालते हैं, तो थंडरबर्ड स्वचालित रूप से एचटीएमएल कोड को बदलता है ताकि मेरी पोस्ट में दूसरे कोड के समान ही दिख सके।


दूसरा समाधान छवि को अटैचमेंट के रूप में जोड़ रहा है और फिर इसे सिड का उपयोग करके एचटीएमएल कोड का संदर्भ दे रहा है।

HTML कोड:

<html>
    <head>
    </head>
    <body>
        <img width=100 height=100 id=""1"" src=""cid:Logo.jpg"">
    </body>
</html>

सी # कोड:

EmailMessage email = new EmailMessage(service);
email.Subject = "Email with Image";
email.Body = new MessageBody(BodyType.HTML, html);
email.ToRecipients.Add("[email protected]");
string file = @"C:\Users\acv\Pictures\Logo.jpg";
email.Attachments.AddFileAttachment("Logo.jpg", file);
email.Attachments[0].IsInline = true;
email.Attachments(0).ContentId = "Logo.jpg";
email.SendAndSaveCopy();

मुझे यहां कोई भी उत्तर उपयोगी नहीं है, इसलिए मैं अपना समाधान प्रदान कर रहा हूं।

  1. समस्या यह है कि आप multipart/related सामग्री प्रकार के रूप में multipart/related जो इस मामले में अच्छा नहीं है। मैं multipart/mixed और इसके अंदर multipart/alternative (यह अधिकांश ग्राहकों पर काम करता है) का उपयोग कर रहा हूं।

  2. संदेश संरचना निम्नानुसार होनी चाहिए:

    [Headers]
    Content-type:multipart/mixed; boundary="boundary1"
    --boundary1
    Content-type:multipart/alternative; boundary="boundary2"
    --boundary2
    Content-Type: text/html; charset=ISO-8859-15
    Content-Transfer-Encoding: 7bit
    [HTML code with a href="cid:..."]
    
    --boundary2
    Content-Type: image/png;
    name="moz-screenshot.png"
    Content-Transfer-Encoding: base64
    Content-ID: <part1.06090408.01060107>
    Content-Disposition: inline; filename="moz-screenshot.png"
    [base64 image data here]
    
    --boundary2--
    --boundary1--
    

फिर यह काम करेगा


यदि यह काम नहीं करता है, तो आप इन उपकरणों में से किसी एक को आज़मा सकते हैं जो छवि को HTML तालिका में परिवर्तित कर देता है (हालांकि आपकी छवि के आकार से सावधान रहें):


यह रुचि हो सकती है कि यदि आप सम्मिलित / चित्र मेनू फ़ंक्शन का उपयोग कर छवि फ़ाइलों को सम्मिलित करते हैं, तो Outlook और Outlook Express दोनों इन मल्टीपार्ट छवि ईमेल प्रारूप उत्पन्न कर सकते हैं।

जाहिर है कि ईमेल प्रकार HTML पर सेट किया जाना चाहिए (सादा पाठ नहीं)।

किसी भी अन्य विधि (जैसे ड्रैग / ड्रॉप, या कोई कमांड लाइन आमंत्रण) परिणामस्वरूप छवियों को अनुलग्नक के रूप में भेजा जा रहा है।

यदि आप अपने आप को ऐसा ईमेल भेजते हैं, तो आप देख सकते हैं कि इसे कैसे प्रारूपित किया गया है! :)

एफडब्ल्यूआईडब्ल्यू, मैं एक स्टैंडअलोन विंडोज निष्पादन योग्य की तलाश में हूं जो कमांड लाइन मोड से इनलाइन छवियों को करता है, लेकिन ऐसा कोई नहीं लगता है। यह एक रास्ता है जो कई लोग चले गए हैं ... कोई इसे उचित रूप से स्वरूपित .eml फ़ाइल पास करके Outlook Express के साथ ऐसा कर सकता है।





mime