[ 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)