【问题标题】:camel-mail IMAP not skipping failed messages骆驼邮件 IMAP 不跳过失败的邮件
【发布时间】:2016-11-25 12:30:48
【问题描述】:

我有路由“imap://%s@%s?password=%s&folderName=%s&unseen=true&delete=true&skipFailedMessage=true”来轮询电子邮件并跳过失败的电子邮件。此属性 skipFailedMessage=true 没有得到尊重,或者我想念它的用法。

我正在阅读来自 5 个具有不同占位符的不同邮箱的电子邮件,但是当我遇到“org.apache.camel.RuntimeCamelException:无法提取正文,原因是:BASE64Decoder:编码流中的错误:找到有效的 base64 字符后电子邮件上的填充字符 (=)"。如果失败的消息被删除,我只能阅读不同邮箱中的所有其他电子邮件。请帮忙。我尝试了 2.17.3 和 2.18 版本,两者的行为方式相同。

这是堆栈跟踪:

org.apache.camel.RuntimeCamelException:无法提取正文,原因是: BASE64Decoder:编码流中的错误:找到有效的 base64 字符 在填充字符 (=) 之后,最近的 10 个字符是: "xmlns:v="u"。交换:交换[]。消息: com.sun.mail.imap.IMAPMessage@7883ab8c 在 org.apache.camel.component.mail.MailBinding.extractBodyFromMail(MailBinding.java:278) 在 org.apache.camel.component.mail.MailMessage.createBody(MailMessage.java:105) 在 org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:47) 在 org.apache.camel.component.mail.MailConsumer.createExchanges(MailConsumer.java:354) 在 org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:128) 在 org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175) 在 org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起: com.sun.mail.util.DecodingException:BASE64Decoder:编码错误 流:在填充字符 (=) 之后找到有效的 base64 字符, 最近的 10 个字符是:"xmlns:v="u" at com.sun.mail.util.BASE64DecoderStream.decode(BASE64DecoderStream.java:309) 在 com.sun.mail.util.BASE64DecoderStream.read(BASE64DecoderStream.java:144) 在 sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) 在 sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) 在 sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) 在 java.io.InputStreamReader.read(InputStreamReader.java:184) 在 com.sun.mail.handlers.text_plain.getContent(text_plain.java:98) 在 javax.activation.DataSourceDataContentHandler.getContent(DataHandler.java:795) 在 javax.activation.DataHandler.getContent(DataHandler.java:542) 在 javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454) 在 org.apache.camel.component.mail.MailBinding.extractBodyFromMail(MailBinding.java:250) ...省略了13个常用框架

【问题讨论】:

  • 将您看到的堆栈跟踪添加到问题中,以便人们可以更好地提供帮助
  • 我记录了一张票以在邮件组件中捕获更广泛的异常:issues.apache.org/jira/browse/CAMEL-10527
  • @user2215545 你检查过 2.17.5、2.18.1、2.19.0 吗?

标签: java apache-camel jakarta-mail imap


【解决方案1】:

错误来自 JavaMail,可能是由于消息格式不正确。您可以通过将 System 属性 "mail.mime.base64.ignoreerrors" 设置为 "true" 来告诉 JavaMail 忽略此类错误。

【讨论】:

    【解决方案2】:

    感谢@Claus Ibsen 记录问题。该问题已在版本2.17.5, 2.18.1, 2.19.0 中报告修复

    我确认它已在 2.18.1 版本中修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2018-06-15
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多