[
https://issues.apache.org/jira/browse/CAMEL-10200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephan Siano resolved CAMEL-10200.
-----------------------------------
Resolution: Fixed
Fix Version/s: 2.18.0
2.17.3
2.16.4
> Mail consumer sets wrong Content-Type header for mails with attachment
> ----------------------------------------------------------------------
>
> Key: CAMEL-10200
> URL: https://issues.apache.org/jira/browse/CAMEL-10200
> Project: Camel
> Issue Type: Bug
> Components: camel-mail
> Affects Versions: 2.16.3, 2.17.2
> Reporter: Stephan Siano
> Assignee: Stephan Siano
> Priority: Minor
> Fix For: 2.16.4, 2.17.3, 2.18.0
>
>
> If a mail with attachment is received the mail consumer components (imap and
> pop3) set the message body to a Multipart Message and take over all headers
> from the mail message.
> All known consumers of the message body (including the mail (SMTP) producer)
> will convert the body into somthing else (using one of the provided type
> converters) and will receive the first text part of the messsage, which is
> the mail body. This is the behaviour one would expect.
> Unfortunately the Content-Type header taken over from the Multipart mail will
> contain a multipart content type (including the MIME boundary) of the whole
> mail, not the content type of the entity usually used as mail body,
> As a consequence the following route will always fail:
> {code}
> from("pop3://james3@localhost?consumer.delay=1000").removeHeader("to").to("smtp://james4@localhost");
> {code}
> The error message is.
> {noformat}
> 2016-07-28 20:01:24,892 [ames2@localhost] ERROR DefaultErrorHandler
> - Failed delivery for (MessageId: ID-WDFD30052822A-54830-1469728883014-0-1
> on ExchangeId: ID-WDFD30052822A-54830-1469728883014-0-2). Exhausted after
> delivery attempt: 1 caught: javax.mail.MessagingException: Missing start
> boundary
> Message History
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId ProcessorId Processor
> Elapsed (ms)
> [route1 ] [route1 ]
> [pop3://james2@localhost?consumer.delay=1000
> ] [ 18]
> [route1 ] [to1 ] [smtp://james3@localhost
> ] [ 13]
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> javax.mail.MessagingException: Missing start boundary
> at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:682)
> at
> javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:513)
> at
> javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1483)
> at
> javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1131)
> at
> javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:515)
> at
> javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1483)
> at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2198)
> at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2159)
> at
> org.apache.camel.component.mail.DefaultJavaMailSender.send(DefaultJavaMailSender.java:118)
> at
> org.apache.camel.component.mail.MailProducer.process(MailProducer.java:63)
> at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> at
> org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:173)
> at
> org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:362)
> at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:168)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:525)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197)
> at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
> at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:91)
> at
> org.apache.camel.component.mail.MailConsumer.processExchange(MailConsumer.java:382)
> at
> org.apache.camel.component.mail.MailConsumer.processBatch(MailConsumer.java:221)
> at
> org.apache.camel.component.mail.MailConsumer.poll(MailConsumer.java:128)
> at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
> at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
> The provided patch will set the Content-Type header of the message to the
> content type of the first text part of the multipart (the one which is also
> returned by the type converters)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)