0

我在这方面搜索了很多,我对 JBoss ESB 和 Camel 相当满意。

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

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

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

如何访问使用骆驼邮件入站到 JBoss ESB 的 MIME Multipart 消息的不同部分?

非常感谢,股东周年大会

骆驼邮件 2.10

Jboss ESB 5.3.1

视窗环境

复制到同事的机器上

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:
4

1 回答 1

1

配置mapMailMessage=false,则可以从JavaMail API 访问源MailMessage API,并可以自己抓取数据。

在 Camel 文档中查看详细信息:http: //camel.apache.org/mail.html

于 2013-06-05T08:42:55.400 回答