JBoss ESB - Camel邮件附件(入站)

时间:2013-06-04 18:54:53

标签: java-ee jboss apache-camel esb jboss-esb

我在Google上搜索了大量内容,我对JBoss ESB和Camel非常熟悉。

我已经定义了一个Camel Mail端点,我的目标是从电子邮件中提取附件,以便将它们用于基于内容的路由。

JB ESB中的Camel集成有点像黑盒子,但基本上,电子邮件的正文内容最终作为字符串在默认位置的邮件正文中结束。如果它是纯文本或HTML电子邮件,这很好,我可以使用它。但如果有多个附件,Camel将提供一个javax.mail.internet.MimeMultiPart(很好)

问题是JBoss ESB试图将此“强制”为String,或者看起来如此,因为消息体默认位置字面上一个字符串对象,其值为例如javax.mail.internet.MimeMultipart@100600当我尝试将主体转换为mimeMultipart时,通过javax.mail.internet.MimeMultipart mime =(MimeMultipart)message.getBody()。get();,我得到可预测的异常java .lang.ClassCastException:java.lang.String无法强制转换为javax.mail.internet.MimeMultipart

如何使用camel邮件访问嵌入JBoss ESB的MIME Multipart消息的不同部分?

非常感谢, AGM

Camel-Mail 2.10

Jboss ESB 5.3.1

Windows环境

复制在同事的机器上

10:39:54,808 INFO  [STDOUT] Body Name is org.jboss.soa.esb.message.defaultEntry
10:39:54,809 INFO  [STDOUT] Body Class is class java.lang.String
10:39:54,809 INFO  [STDOUT] Attempting to display body contents via toString
10:39:54,809 INFO  [STDOUT] body value is javax.mail.internet.MimeMultipart@150ce1d
10:39:54,809 INFO  [STDOUT] javax.mail.internet.MimeMultipart@150ce1d
10:39:54,809 INFO  [STDOUT] class java.lang.String
10:39:54,809 INFO  [STDOUT] class java.lang.String
10:39:54,810 ERROR [STDERR] java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.internet.MimeMultipart
10:39:54,810 ERROR [STDERR]     at com.XXX.integration.actions.GetAttachment.process(GetAttachment.java:23)
10:39:54,810 ERROR [STDERR]     at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:667)
10:39:54,810 ERROR [STDERR]     at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:614)
10:39:54,811 ERROR [STDERR]     at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:442)
10:39:54,811 ERROR [STDERR]     at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:587)
10:39:54,811 ERROR [STDERR]     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
10:39:54,811 ERROR [STDERR]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
10:39:54,812 ERROR [STDERR]     at java.lang.Thread.run(Thread.java:662)
10:39:54,812 INFO  [STDOUT] FULL SPOOL:

1 个答案:

答案 0 :(得分:1)

配置mapMailMessage = false,然后您可以从JavaMail API访问源MailMessage API,您可以自己获取数据。

请参阅Camel doc的详细信息:http://camel.apache.org/mail.html