如何使用java库Jodd Email将图像嵌入到电子邮件的html主体中?

时间:2012-11-24 23:57:54

标签: java image email embed jodd

在Jodd电子邮件库的主页http://jodd.org/doc/email.html 有一个非常具体的示例,说明如何使用该库将图像嵌入(而不仅仅是将其作为文件附加)到您要发送的电子邮件中。

不幸的是,包含图片的电子邮件部分的最终内容类型是:

Content-Type: application/octet-stream

但为了正确显示它,我们需要这个Content-Type:

Content-Type: image/png

例如,如果你有一个png图像。

但我似乎无法找到如何在Jodd电子邮件库中配置它..

这就是我所寻求的。谢谢:))

1 个答案:

答案 0 :(得分:1)

如果您按照Jodd网站上的示例进行操作,则使用 embedFile()方法嵌入文件。这种方法是一种“捷径”方法:

attach(new FileAttachment(file));

其中 attach()是附加内容的核心通用方法。 FileAttachment 依赖于 javax.mail 来设置内容类型,可能基于扩展名。

因此,要手动设置内容类型,请使用通用 attach()方法。例如,嵌入这样的文件:

.embedFile("d:\\c.xxx")

会将内容类型设置为“application / octet-stream”,因为 xxx 扩展名无法识别。相反,您可以使用以下内容:

.attach(new ByteArrayAttachment(
        FileUtil.readBytes("d:\\c.xxx"), "image/png", "c.png", "c.png"))

您可以在其中手动设置内容类型,而不管文件名。如果您不想加载文件字节,可以传递 InputStream 等。

另一种解决方案(如果您想继续使用 embedFile )是检查mime type settings

注意:由于有很多组合如何附加内容(字节,输入流,文件,内联...),附加方法将在Jodd 3.4.1中重构。为了提供更多开发人员友好的api。请继续关注;)