Jakarta ee JBoss ESB—驼峰邮件邮件附件(入站)

Jakarta ee JBoss ESB—驼峰邮件邮件附件(入站),jakarta-ee,jboss,apache-camel,esb,jboss-esb,Jakarta Ee,Jboss,Apache Camel,Esb,Jboss Esb,我在谷歌上搜索了大量信息,我对JBossESB和Camel相当满意 我已经定义了一个驼峰邮件端点,我的目标是从电子邮件中提取附件,以便将其用于基于内容的路由 JB ESB中的Camel集成有点像一个黑匣子,但基本上,电子邮件的正文内容以字符串形式结束在消息正文的默认位置。如果是纯文本或HTML电子邮件,这很好,我可以处理它。但是如果有多个附件,Camel将提供javax.mail.internet.MimeMultiPart(这很好) 问题在于JBoss ESB试图将其“强制”为字符串,或者看起

我在谷歌上搜索了大量信息,我对JBossESB和Camel相当满意

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

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

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

如何使用驼峰邮件访问内置到JBossESB的MIME多部分消息的不同部分

非常感谢,, 年度股东大会

骆驼邮件2.10

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

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


请参阅Camel文档中的详细信息:

始终告诉您使用的各种项目的版本,作为其重要信息。我也尝试过扩展CamelMessageComposer并尝试使用属性“composer class”注入该属性,但ESB似乎不支持注入尝试(没有看到第一线printlns),谢谢您的建议。我试过这个,但似乎没有任何改变。Body仍然是包含类类型和内存引用的实际字符串。。。作为字符串…不,您可以从JDK获取原始的MailMessageAPI。在那里,您可以自己解析数据,例如,当您设置该选项时-Camel在all.javax.mail.message msg=exchange.getIn(MailMessage.class).getMessage()处不接触邮件消息;