繁体   English   中英

Camel Route 通过调用 url IMAP 服务器读取邮件,但如果 Content-Transfer-Encoding:quoted-printable 将抛出 RuntimeCamelException

[英]Camel Route read Mail by call url IMAP Server, but will throw RuntimeCamelException if Content-Transfer-Encoding:quoted-printable

每个人。 我有一个应用程序使用骆驼路由调用 url IMAP 来读取邮件和检索内容, from("{{route1.imap.protocol}}://{{route1.imap.host}}?username={{route1.imap.username}}&password={{route1.imap.password}}&consumer.delay={{route1.consumer.delay}}&fetchSize={{route1.fetchSize}}{{route1.otherOptions}}")" ,大部分邮件被应用程序读取成功,但最近我们遇到客户端发送的邮件带有Content-Transfer-Encoding:quoted-printable ,然后应用程序会抛出 RuntimeCamelException

org.apache.camel.RuntimeCamelException: Failed to extract body due to: Unknown encoding: quoted-printable . Exchange: Exchange[]. Message: com.sun.mail.imap.IMAPMessage@7970ebf3
    at org.apache.camel.component.mail.MailBinding.extractBodyFromMail(MailBinding.java:278) ~[camel-mail-2.18.1.jar:2.18.1]
    at org.apache.camel.component.mail.MailMessage.createBody(MailMessage.java:105) ~[camel-mail-2.18.1.jar:2.18.1]
    at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:47) ~[camel-core-2.18.1.jar:2.18.1]
    at org.apache.camel.component.mail.MailConsumer.createExchanges(MailConsumer.java:354) ~[camel-mail-2.18.1.jar:2.18.1]
    at org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:128) ~[camel-mail-2.18.1.jar:2.18.1]
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175) [camel-core-2.18.1.jar:2.18.1]
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102) [camel-core-2.18.1.jar:2.18.1]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_281]
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [na:1.8.0_281]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [na:1.8.0_281]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0_281]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_281]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_281]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_281]
Caused by: java.io.IOException: Unknown encoding: quoted-printable 
    at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:115) ~[javax.mail-1.5.5.jar:1.5.5]
    at com.sun.mail.handlers.text_plain.getContent(text_plain.java:80) ~[javax.mail-1.5.5.jar:1.5.5]
    at javax.activation.DataSourceDataContentHandler.getContent(Unknown Source) ~[na:1.8.0_281]
    at javax.activation.DataHandler.getContent(Unknown Source) ~[na:1.8.0_281]
    at javax.mail.internet.MimeMessage.getContent(MimeMessage.java:1454) ~[javax.mail-1.5.5.jar:1.5.5]
    at org.apache.camel.component.mail.MailBinding.extractBodyFromMail(MailBinding.java:250) ~[camel-mail-2.18.1.jar:2.18.1]
    ... 13 common frames omitted
Caused by: javax.mail.MessagingException: Unknown encoding: quoted-printable 
    at javax.mail.internet.MimeUtility.decode(MimeUtility.java:389) ~[javax.mail-1.5.5.jar:1.5.5]
    at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:108) ~[javax.mail-1.5.5.jar:1.5.5]

我试图找到解决方案,我发现可能将系统属性mail.mime.ignoreunknownencoding设置为“true”,但我不明白在哪里设置mail.mime.ignoreunknownencoding 如果有人知道在哪里设置? 在 Outlook、IMAP 服务器或我的应用程序属性中?

而使用依赖camel-mail:2.18.1的应用程序,方法extractBodyFromMail MailBinding.class了这个异常。 或者我应该重写MailBinding类以覆盖方法extractBodyFromMail

如果有人可以帮助我,非常感谢。

在 infos 电子邮件中添加一些详细信息

Date: Mon, 23 May 2022 12:50:19 +0000
From: <xxx@xxxx>
To: <xxx@xxxxx>, <xx@xxx>, <xx@xxx>
Subject: 1964790 - SCR_CNX_ADEP_STANDARD
Content-Transfer-Encoding: quoted-printable 
MIME-Version: 1.0
Content-Type: text/plain
Message-ID: <991336a1-5f3d-449a-91af-c9a54cfb2e0f@xx.xx.local>
Return-Path: xx@xxx
X-Originating-IP: [10.1.128.112]
X-ClientProxiedBy: polar.airdolomiti.local (10.1.128.215) To
 polar.airdolomiti.local (10.1.128.215)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xxxxxx.it; h=date:from:to:subject:content-transfer-encoding:mime-version:content-type:message-id; s=default; bh=2KBKjicvV/qIKyzYQAsZqkpDEKd3+uRQ8VlcakqOVx0=; b=E9wS98Kd+RrFNdRSOdPNwWT4Ga7P0/64LrM8plbjw1Fx7vtI1330ebvhVBjMNOuWlj8ctv+UmUs+GBnrEP/VNdLRv4vX+uPhq7JwWs9A6mlS0hWcOL4S711WLHrHdW8C4wXyQN4VmYfDRHx7jnhPwJBcY5RdWgjHf9sgOAfcdI4=
X-MS-Exchange-Organization-ExpirationStartTime: 23 May 2022 12:50:20.4282
 (UTC)
X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit
X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000
X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit
X-MS-Exchange-Organization-Network-Message-Id:
 e760ac37-bb92-4d82-685f-08da3cbacba1
X-EOPAttributedMessage: 0
X-EOPTenantAttributedMessage: d3fc41ce-14c2-4518-9065-8fe78ff84136:0
X-MS-Exchange-Organization-MessageDirectionality: Incoming
X-MS-PublicTrafficType: Email
X-MS-Exchange-Organization-AuthSource:
 PR2FRA01FT010.eop-fra01.prod.protection.outlook.com
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Office365-Filtering-Correlation-Id: e760ac37-bb92-4d82-685f-08da3cbacba1
X-MS-TrafficTypeDiagnostic: PR0P264MB2439:EE_
X-MS-Exchange-Organization-SCL: -1
X-Microsoft-Antispam: BCL:0;
X-Forefront-Antispam-Report:
 CIP:151.11.112.123;CTRY:IT;LANG:en;SCL:-1;SRV:;IPV:NLI;SFV:SFE;H:mail.airdolomiti.it;PTR:mail.airdolomiti.it;CAT:NONE;SFS:;DIR:INB;
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 May 2022 12:50:20.2876
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e760ac37-bb92-4d82-685f-08da3cbacba1
X-MS-Exchange-CrossTenant-Id: d3fc41ce-14c2-4518-9065-8fe78ff84136
X-MS-Exchange-CrossTenant-AuthSource:
 PR2FRA01FT010.eop-fra01.prod.protection.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: Internet
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR0P264MB2439
X-MS-Exchange-Transport-EndToEndLatency: 00:00:01.9451105
X-MS-Exchange-Processed-By-BccFoldering: 15.20.5273.022
X-Microsoft-Antispam-Mailbox-Delivery:

最后。 我找到了在应用程序运行之前修改属性的解决方案。它可以工作。

System.getProperties().setProperty("mail.mime.ignoreunknownencoding","true"); SpringApplication.run(xxx.class, args);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM