在HTML电子邮件中嵌入附加图像

时间:2009-05-28 20:07:16

标签: email mime

如果我将图片附加到电子邮件中,我该如何将其放入HTML内容?我尝试使用文件名作为图像源,但似乎不起作用。

7 个答案:

答案 0 :(得分:11)

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

结果将是带有text / html部分的多部分MIME消息(如果你真的使用text / plain类型的替代部分正确执行)和几个图像,然后从HTML中引用。

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

答案 1 :(得分:4)

您可以使用src="cid:bgBoletin"标记img属性的相同方式。

答案 2 :(得分: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文件中以这种方式引用de Content-ID background:url(cid:bgBoletin)。

答案 3 :(得分:3)

您的问题的答案在春季文档here中。

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

消息正文是多部分消息的一部分(注意在MimeMessageHelper的构造函数上将第二个参数设置为true,将消息设置为多部分消息)。

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

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

图像附件部分需要Content-ID

--T4nu9J8b
Content-Type: image/png
Content-ID: <idname>
Content-Transfer-Encoding: base64
Content-Disposition: attachment ;filename="testimage.png"

iVBORw0KGgoAAAANS...
--T4nu9J8b--
  

注意:Content-ID名称应放在尖括号中,如给定

使用相同的Content-ID将其嵌入到标签中(不带尖括号)

<img alt="Embedded Image" src="cid:idname"/>

这应该允许将附件图像显示为HTML!

答案 6 :(得分:0)

选项01:
- 附上文件&#34; mySignaturePictue.jpg&#34;作为邮件的附件
- 从身体引用这个附件(插入它),代码如下:
<img src="cid:mySignaturePicture.png">

选项02:
- 将图像转换为base64字符串:http://www.motobit.com/util/base64-decoder-encoder.asp
- 将其插入到mailtext / html-body中,代码为
<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/