[ https://issues.apache.org/jira/browse/CAMEL-20907?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17859628#comment-17859628 ]
Claus Ibsen commented on CAMEL-20907: ------------------------------------- Only Camel 3.22.x is limited supported until end of this year. Try this release first. > came-mail - In Poll Enrich EIP, get email attachments are empty > --------------------------------------------------------------- > > Key: CAMEL-20907 > URL: https://issues.apache.org/jira/browse/CAMEL-20907 > Project: Camel > Issue Type: Bug > Components: came-core > Affects Versions: 3.18.0 > Reporter: kangjian > Priority: Major > > Let's say I need to wait for an event notification and then pull an > attachments email like this: > Camel version 3.18.x > {code:java} > from("servlet://foo?servletName=MyServlet") > .loopDoWhile().simple("${exchangeProperty.CamelBatchComplete} == null || > ${exchangeProperty.CamelBatchComplete} == false") > .pollEnrich("imaps://{{mail.server}}?session=#oAuthSession&closeFolder=false&peek=true&folderName={{mail.sub.folder}}&sendEmptyMessageWhenIdle=true") > .process(exchange -> { > AttachmentMessage attachmentMessage = exchange.getIn(AttachmentMessage.class); > // Here attachments is null > Map<String, DataHandler> attachments = attachmentMessage.getAttachments(); > }) > .end();{code} > > Same code, works fine in Camel 3.14.x but doesn't work in Camel 3.18.x. > After debugging, it was found that in Camel 3.16.x, the implementation of > DefaultAttachmentMessage.java was upgraded. > The key point is the CamelAttachmentObjects property in the ExchangeProperty, > which is placed in the Exchange property in version 3.14.x, and in the > ExtendedExchange property in version 3.16.x, which results in the loss of the > CamelAttachmentObjects property between different Exchange. > Details can be found in the link below line 274: > [https://github.com/apache/camel/commit/0125a133a11cbdff57d459634bac276c10963387] > I tried a solution as follows: > Camel version 3.18.x > {code:java} > from("servlet://foo?servletName=MyServlet") > .loopDoWhile().simple("${exchangeProperty.CamelBatchComplete} == null || > ${exchangeProperty.CamelBatchComplete} == false") > .pollEnrich("imaps://{{mail.server}}?session=#oAuthSession&closeFolder=false&peek=true&folderName={{mail.sub.folder}}&sendEmptyMessageWhenIdle=true", > ((oldExchange, newExchange) -> { > // Deliver the attachment to the oldExchange > oldExchange.setIn(newExchange.getIn(AttachmentMessage.class)); > return oldExchange; > })) > .process(exchange -> { > AttachmentMessage attachmentMessage = exchange.getIn(AttachmentMessage.class); > Map<String, DataHandler> attachments = attachmentMessage.getAttachments(); > }) > .end(); {code} > The above can solve the problem of not being able to get attachments, but > there will be other properties missing. > Can you help with this? If information is missing, please do not hesitate to > contact. -- This message was sent by Atlassian Jira (v8.20.10#820010)