2009-05-28 29 views
15

में संलग्न छवियों को एम्बेड करना अगर मैं किसी ईमेल को एक छवि संलग्न करता हूं, तो मैं इसे HTML सामग्री में कैसे रख सकता हूं? मैंने फ़ाइल नाम का उपयोग छवि स्रोत के रूप में करने का प्रयास किया लेकिन यह काम नहीं कर रहा है।एचटीएमएल ईमेल

+0

क्या आप इस प्रोग्रामेटिक रूप से या ईमेल क्लाइंट के माध्यम से ऐसा करने का प्रयास कर रहे हैं? – biggusjimmus

उत्तर

10

कैसे आप HTML मेल संदेश निर्माण के बारे में अधिक स्पष्ट रहें।

परिणाम एक टेक्स्ट/एचटीएमएल भाग के साथ एक मल्टीपार्ट-एमआईएम संदेश होगा (यदि आप वास्तव में टाइप टेक्स्ट/सादे के वैकल्पिक भाग के साथ सही करते हैं) और कई छवियां, जिन्हें HTML के भीतर से संदर्भित किया जाता है।

मिश्रित माइम और संबंधित डेटा में के बारे में सामग्री आईडी अधिक जानकारी (HTML स्रोत में सीआईडी ​​द्वारा कहा गया है) के लिए RFC 1813 और RFC 2378 देखें।

+1

यह एचटीएमएल और छवि भागों के साथ एक मल्टीपार्ट एमआईएमई संदेश के रूप में बनाया गया है।अगर मैं इन आरएफसी को सही तरीके से पढ़ रहा हूं, तो ऐसा लगता है कि मुझे छवि अनुलग्नकों पर एक सामग्री आईडी डालने की आवश्यकता है और फिर छवि स्रोत के रूप में cid: xxx का उपयोग करें। – user83358

+0

यह सही है, अगर सब कुछ पहले से ही एमआईएमई संदेश में मौजूद है, तो उन्हें एम्बेड करना आसान है। – Lucero

2

यदि इसे विकसित करने वाली वेबसाइट से ईमेल भेजने के साथ ऐसा करना है, तो बस छवियों को अपने सर्वर पर रखें और फिर <img src="url"/> का उपयोग करके उनसे लिंक करें।

+13

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

+0

@ लुसेरो सक्रिय रूप से एप्लिकेशन व्यवहार को बाधित कर रहा है, मेरी राय में। उपयोगकर्ता ने अपनी सुविधाओं के किसी दिए गए एप्लिकेशन __because__ का उपयोग करना चुना है, और वास्तव में यह नाराज हो सकता है कि कोई इस कार्यक्षमता को बाईपास करने के लिए अपने रास्ते से बाहर हो गया है। अधिकांश आधुनिक मेल ऐप्स आपको कुछ प्रेषकों (या यहां तक ​​कि डोमेन) से चित्रों को हमेशा देखने का विकल्प भी देते हैं, जिससे उपयोगकर्ता यह तय कर सकता है कि वे भविष्य में आपकी छवियां देखना चाहते हैं या नहीं। –

+1

@NathanCox, यह कार्यक्षमता को छोड़कर बिल्कुल नहीं है। ई-मेल क्लाइंट उपयोगकर्ताओं को उजागर होने से बचाने के लिए छवियों को डाउनलोड नहीं करते हैं (जब वेब पता वैयक्तिकृत किया जाता है, प्रेषक यह पता लगा सकता है कि मेल कब पढ़ा गया था और यह भी कि ई-मेल पता अभी भी वैध है और उपयोग में है)। लिंक की गई छवियों को प्रदर्शित नहीं करना एक सुरक्षा उपाय है और उपयोगकर्ताओं को छवियों को देखने की प्राथमिकता से कोई लेना देना नहीं है (यह कुछ ई-मेल क्लाइंट में एक अलग सेटिंग है)। – Lucero

3

मैं इस तरह से

_mime = new MimeMultipart(); 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart = new MimeBodyPart(); 
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg"); 

messageBodyPart.setDataHandler(new DataHandler(fds)); 
messageBodyPart.setHeader("Content-ID", "<bgBoletin>"); 
_mime.addBodyPart(messageBodyPart); 

में और HTM फ़ाइल में कर रहा हूँ BREAK इसके रास्ते पृष्ठभूमि में संदर्भ डी सामग्री-ID: यूआरएल (सीआईडी: bgBoletin)।

+0

आपकी कक्षा मेल है? ... "MimeMultipart" -> वर्ग सक्रियण का उपयोग करने के लिए? – delive

4

आप img टैग की src="cid:bgBoletin" संपत्ति के साथ उसी तरह उपयोग कर सकते हैं।

3

अपने प्रश्न का उत्तर वसंत डॉक्स here में है।

mailSender.send(new MimeMessagePreparator() { 
    public void prepare(MimeMessage mimeMessage) throws MessagingException { 
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    message.setFrom("[email protected]"); 
    message.setTo("[email protected]"); 
    message.setSubject("my subject"); 
    message.setText("my text <img src='cid:myLogo'>", true); 
    message.addInline("myLogo", new ClassPathResource("img/mylogo.gif")); 
    } 
}); 

संदेश के मुख्य भाग बहुखण्डीय संदेश के कुछ हिस्सों (ध्यान दें दूसरा पैरामीटर MimeMessageHelper के निर्माता है कि एक बहुखण्डीय संदेश के लिए संदेश सेट पर सही पर सेट) में से एक है।

लाइन message.addInline("myLogo"... बहुखण्डीय संदेश के दूसरे हिस्से के रूप में छवि कहते हैं।

आप .setText का उपयोग ई-मेल संदेश के मुख्य भाग (HTML सामग्री) स्थापित करने के लिए कर सकते हैं।

आप टैग के सीआइडी का उपयोग करके बहुखण्डीय ईमेल (अपनी छवि) के अन्य भागों में देख सकते हैं। नोट करें कि img src विशेषता src='cid:myLogo' है। सीआईडी ​​छवि की सामग्री आईडी है, जिसे मल्टीपार्ट संदेश के हिस्सों में से एक के रूप में भेजा गया है।

+0

कृपया अपनी कक्षा MimeMessage MimeMessageHelper, या सीधे पोस्ट करें .jar – delive

0

विकल्प 01:
- फ़ाइल "mySignaturePictue.jpg" अनुलग्नक के रूप में
मेल करने के लिए देते हैं - जैसे कोड whith शरीर (डालने) से संदर्भ इस लगाव:
<img src="cid:mySignaturePicture.png">

विकल्प 02:
- एक बेस 64 स्ट्रिंग के लिए अपनी छवि परिवर्तित: http://www.motobit.com/util/base64-decoder-encoder.asp
- mailtext/html-शरीर के लिए यह
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
की तरह सम्मिलित कोड के साथ- डाउनसाइड: यह अधिकांश ग्राहकों द्वारा अवरुद्ध है और मेल आकार में वृद्धि करेगा, देखें: https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/ और https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/

संबंधित मुद्दे