JavaMail使用来自sun internal“saaj”包的MimeMultipart

时间:2015-12-07 15:14:20

标签: java spring apache-camel javamail

我使用Spring Boot和Apache Camel进行后台处理,读取电子邮件,提取附件并对其进行处理。

在第一个版本中,这很好用。第二个版本添加了一个Web服务,包括发送附件。现在,电子邮件附件提取有时会起作用,有时却不起作用。 Camel mailbinding类的调试消息是:

No attachments to extract as content is not Multipart: com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart

我怀疑saaj MimeMultipart类用于Web服务+附件,但是我们不知道为什么JavaMail会选择这个类而不是javax.mail.internet.MimeMultipart?

有什么想法吗?我们怎样才能阻止这种情况?

以下是上述日志行的上下文:

o.a.camel.component.mail.MailConsumer    : Fetching 1 messages. Total 1 messages.
o.a.camel.component.mail.MailConsumer    : Mail #0 is of type: com.sun.mail.imap.IMAPMessage - com.sun.mail.imap.IMAPMessage@28091f09
o.a.camel.component.mail.MailConsumer    : Mapping #0 from javax.mail.Message to Camel MailMessage
o.a.camel.component.mail.MailBinding     : Extracting attachments +++ start +++
o.a.camel.component.mail.MailBinding     : No attachments to extract as content is not Multipart: com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeMultipart
o.a.camel.component.mail.MailBinding     : Extracting attachments +++ done +++

1 个答案:

答案 0 :(得分:0)

这是一个JRE错误:JDK-8043129 : JAF initialisation in SAAJ clashing with the one in javax.mail它说

  

在初始化SAAJ组件之后,由javax.mail定义的JAF处理程序不起作用。

它解释了第一封邮件的成功处理(在处理管道中使用了更多的Web服务)以及后续邮件的附件处理失败。

解决方案很简单:此错误已在Java 7 Update 76和Java 8 Update 20中修复。

此问题再次强调了在开发和生产环境中保留相同软件版本的重要性。