【发布时间】:2010-10-29 16:53:08
【问题描述】:
如果我将图像附加到电子邮件中,如何将其放置在 HTML 内容中?我尝试只使用文件名作为图像源,但这似乎不起作用。
【问题讨论】:
-
您是尝试以编程方式还是通过电子邮件客户端执行此操作?
如果我将图像附加到电子邮件中,如何将其放置在 HTML 内容中?我尝试只使用文件名作为图像源,但这似乎不起作用。
【问题讨论】:
【讨论】:
您可以对img 标签的src="cid:bgBoletin" 属性使用相同的方式。
【讨论】:
您的问题的答案在春季文档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,作为多部分消息的一部分发送。
【讨论】:
message.addInline 需要在message.setText 之后,否则文件将不会附加到电子邮件中
图片附件部分需要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 中!
【讨论】:
我就是这样做的
_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 背景:url(cid:bgBoletin)。
【讨论】:
选项 01:
- 将文件“mySignaturePictue.jpg”作为附件附加到邮件
- 从正文中引用此附件(插入),代码如下:<img src="cid:mySignaturePicture.png">
选项 02:
- 将您的图像转换为 base64 字符串:http://www.motobit.com/util/base64-decoder-encoder.asp
- 使用 <img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
之类的代码将其插入到 mailtext/html-body
- 缺点:这被大多数客户端阻止并且会增加邮件大小,请参阅: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/
【讨论】:
如果这与从您正在开发的网站发送电子邮件有关,只需将图像保存在您的服务器上,然后使用<img src="url"/> 链接到它们。
【讨论】: