Apache Came中的内联附件MIME类型

时间:2015-06-11 19:22:11

标签: java apache-camel javamail

我想将图像添加为内联附件,使用以下代码

一切正常
<img src="cid:logo.jpg">
in.addAttachment("cid:logo.jpg", new DataHandler(new FileDataSource("src/resources/logo.jpg")));

唯一的问题是,我无法在Thunderbird中看到图像作为内联附件,因为内容类型是“application / octet-stream”,但它必须是“image / jpeg”才能正确显示。 当我在Apache Camel中添加MIME类型时:

in.addAttachment("cid:logo.jpg", new DataHandler(new FileDataSource("src/resources/logo.jpg"), "image/jpeg"));

它抛出并且异常说“MIME类型image / pjpeg没有对象DCH” 我该如何处理这个问题?!

2 个答案:

答案 0 :(得分:1)

不确定这是否真的是您的问题,但如果您查看文档(http://camel.apache.org/mail.html),则说明:

  

Geronimo邮件.jar   图标   我们发现geronimo邮件.jar(v1.6)在使用附件轮询邮件时有一个错误。它无法正确识别Content-Type。因此,如果您将.jpeg文件附加到邮件并进行轮询,则Content-Type将解析为text / plain而不是image / jpeg。出于这个原因,我们添加了一个org.apache.camel.component.ContentTypeResolver SPI接口,它允许您提供自己的实现并通过根据文件名返回正确的Mime类型来修复此错误。因此,如果文件名以jpeg / jpg结尾,则可以返回image / jpeg。   您可以在MailComponent实例或MailEndpoint实例上设置自定义解析程序。

如果这是您的问题,解决方案是提供您自己的ContentTypeResolver

实施

答案 1 :(得分:0)

按照this JavaMail FAQ entry中的说明创建一个DataSource,并在第一个示例中使用它代替FileDataSource。