camel-mail:无法发送带附件的邮件

时间:2016-06-06 16:40:06

标签: email apache-camel attachment mime

编辑:如果有人在这里遇到类似的问题寻找答案,抱歉,我没有任何有用的建议,我只是放弃并写下所有内容" pure"带有org.apache.commons.mail库的Java。 Apache Camel路由只是检测文件的存在并将文件地址提供给我的Java bean。

还解决了Ninja Code Monkey强调使用consumerTemplate抓取其他文件的问题。

以下原帖:

我正在开发一个Camel Route,它应该根据一些文件输入发送电子邮件(一个列出收件人地址,主题,正文等的自制XML文件)。

它可以正常处理没有附件的电子邮件,但我现在正在尝试添加对附件的支持,并且我不断收到以下异常: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed;

我已经查看了Camel关于mail的页面,以及单元测试中的代码示例,但我没有看到我做错了什么。

这是我在Java DSL中的路线:

from("file: ...options... ")
    .setHeader("To",xpath("/root/destinataire/text()"))
    .setHeader("Subject",xpath("/root/sujet/text()"))
    .setHeader("BodyPath",xpath("/root/body/text()"))
    .setHeader("AttachementPath",xpath("/root/attachement/text()"))

    .process(new org.apache.camel.Processor() {
        public void process(org.apache.camel.Exchange exchange) throws Exception {
            consumerTemplate = exchange.getContext().createConsumerTemplate();
            String body_content = consumerTemplate.receiveBody("file: ...options... ", String.class);
            //I'm using the consumerTemplate to get the file containing the body, works fine
            exchange.getIn().setBody(body_content);
        }
    })

    .process(new org.apache.camel.Processor() {
        public void process(org.apache.camel.Exchange exchange) throws Exception {
            String attachementPath = exchange.getIn().getHeader("AttachementPath", String.class);
            //Camel's webpage and unit-tests are using addAttachment with DataHandler(FileDataSource), so I'm doing the same
            DataHandler fileAttachment = new DataHandler(new FileDataSource(attachementPath));
            exchange.getIn().addAttachment("filename.xxx", fileAttachment);
        }
    })

    //the exception is thrown at the next instruction :
    .to("smtp://esb@localhost: ... ?password= ...")
;

在搜索问题的时候,我发现了一些相关的信息,但是他们正在处理不同的Java对象,例如MimeBodyPart,而addAttachment方法需要DataHandler,所以我没有'我真的知道我应该怎么处理这件事。

至于配置信息,我们在Java 6上运行Camel 2.10.4(是的,它过时了,我们正在进行升级,但这条电子邮件路由应该在生产中在Camel升级之前的方式。)

编辑:其他信息,当我用fileAttachment.getContentType()检查DataHandler对象时,它正在给我" text / plain"对于文本文件,或者" image / jpeg"和" image / png"与图像。

根据我的理解,这意味着我的问题不在于附件的MIME类型,而在于身体和附件混合在一起的方式。

0 个答案:

没有答案