2009-05-28 102 views
15

如果我将图像附加到电子邮件,我如何将它放置在HTML内容中?我试图使用文件名作为图像源,但似乎没有工作。在HTML电子邮件中嵌入附加图像

+0

您是否试图以编程方式或通过电子邮件客户端进行此操作? – biggusjimmus 2009-05-28 20:10:14

回答

10

更具体地说明您如何构建HTML邮件消息。

结果将是一个带有文本/ html部分的多部分MIME消息(如果你真的是用text/plain类型的替代部分来做的话)以及几个图像,然后在HTML中引用它们。

请参阅RFC 1813RFC 2378了解有关混合MIME和相关数据中的content-id(由HTML源代码中的CID引用)的更多信息。

+1

它被构建为带有html和图像部分的多部分MIME消息。如果我正确阅读这些RFC,这听起来像我只需要将内容ID放在图像附件上,然后使用cid:xxx作为图像源。 – user83358 2009-05-29 20:26:24

+0

这是正确的,如果其他所有内容已经存在于MIME消息中,则嵌入它们很容易。 – Lucero 2009-06-02 11:28:03

2

如果这与从您正在开发的网站发送电子邮件有关,只需将图像保存在服务器上,然后使用<img src="url"/>链接到它们。

+13

...除非用户明确确认,否则大多数现代邮件应用程序都不会出于安全原因显示这些图像。嵌入(小)图像更好,以确保信息将按预期显示(或者,这将更有可能)。 – Lucero 2009-05-28 20:22:07

+0

@我认为@Lucero积极规避应用程序行为是禁忌。用户选择使用给定的应用程序__作为其功能,并且事实上可能会被冒犯,以至于有人已经不顾一切地绕过该功能。大多数现代邮件应用程序还允许您始终查看某些发件人(甚至是域)的图像,让用户决定是否希望在未来看到您的图像。 – 2012-03-14 15:23:15

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文件磨片基准日的Content-ID在这样的背景:网址(CID:bgBoletin)。

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

消息的主体是多部分消息的部分(注意设置为true MimeMessageHelper的构造,设置该信息至一个多部分消息的第二参数)中的一个。

message.addInline("myLogo"...添加图像作为多部分消息的另一部分。

您可以使用.setText设置电子邮件正文(HTML内容)。

您可以使用标签cid引用多部分电子邮件的其他部分(您的图片)。请注意img src属性如何为src='cid:myLogo'。 cid是图像的内容ID,作为多部分消息的一部分发送。

0

选项01:
- 文件 “mySignaturePictue.jpg” 作为附件附加到邮件
- 从所述主体(插入)参考该安装均可进行类似的代码:
<img src="cid:mySignaturePicture.png">

选项02:
- 你的图像转换成一个base64字符串: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/

相关问题