'Caused by: com.sun.mail.util.FolderClosedIOException: null
I am using apache camel to monitor the incoming email to the inbox. After receiving the email the content (attachment) is being consumed. To consume the attachment in the email I used the code ilusterated on the apache camel homepage
https://camel.apache.org/components/3.16.x/mail-component.html
For some reason I am getting the following error:
Caused by: com.sun.mail.util.FolderClosedIOException: null
Code
@Component
public class EmailPollingRoute extends RouteBuilder {
static final Logger LOGGER = LoggerFactory.getLogger(EmailPollingRoute.class);
@Override
public void configure() throws Exception {
//@formatter:off
from("direct:processPollingEmail")
.routeId("routeId_EmailPollingRoute")
.pollEnrich("imaps://imap.web.de?username=XXXX&password=XXXXX&unseen=true&subject=FK100 - daily")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
AttachmentMessage attachmentMessage = exchange.getMessage(AttachmentMessage.class);
Map<String, DataHandler> attachments = attachmentMessage.getAttachments();
if (attachments != null && attachments.size() > 0) {
for (String name : attachments.keySet()) {
DataHandler dh = attachments.get(name);
// get the file name
String filename = dh.getName();
if(filename != null && filename.endsWith(".csv")){
byte[] data = exchange.getContext().getTypeConverter()
.convertTo(byte[].class, dh.getInputStream());
LOGGER.info("data: " + data);
// write the data to a file
FileOutputStream out = new FileOutputStream(filename);
out.write(data);
out.flush();
out.close();
}
}
}
}
})
.to("log:newmail")
;
//@formatter:on
}
}
Error:
com.sun.mail.util.FolderClosedIOException: null
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:90)
at org.apache.camel.component.mail.DelegatingDataSource.getInputStream(DelegatingDataSource.java:46)
at javax.activation.DataHandler.getInputStream(DataHandler.java:221)
at com.EmailPollingRoute$1.process(EmailPollingRoute.java:51)
at org.apache.camel.support.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:65)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:469)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:69)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2022-04-15 22:13:02 [DefaultQuartzScheduler-camel-1_Worker-1] WARN o.a.c.component.mail.MailConsumer - Exchange failed, so rolling back message status: Exchange[328303AF174DCB4-0000000000000000]
com.sun.mail.util.FolderClosedIOException: null
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:90)
at org.apache.camel.component.mail.DelegatingDataSource.getInputStream(DelegatingDataSource.java:46)
at javax.activation.DataHandler.getInputStream(DataHandler.java:221)
at com.EmailPollingRoute$1.process(EmailPollingRoute.java:51)
at org.apache.camel.support.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:65)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:469)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:69)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2022-04-15 22:13:02 [DefaultQuartzScheduler-camel-1_Worker-1] ERROR o.a.camel.component.quartz.CamelJob - Error processing exchange. Exchange[328303AF174DCB4-0000000000000000]. Caused by: [org.quartz.JobExecutionException - com.sun.mail.util.FolderClosedIOException]
2022-04-15 22:13:02 [DefaultQuartzScheduler-camel-1_Worker-1] INFO org.quartz.core.JobRunShell - Job Camel_camel-1.emailTimer threw a JobExecutionException:
org.quartz.JobExecutionException: com.sun.mail.util.FolderClosedIOException
at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:80)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: com.sun.mail.util.FolderClosedIOException: null
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:90)
at org.apache.camel.component.mail.DelegatingDataSource.getInputStream(DelegatingDataSource.java:46)
at javax.activation.DataHandler.getInputStream(DataHandler.java:221)
at com.EmailPollingRoute$1.process(EmailPollingRoute.java:51)
at org.apache.camel.support.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:65)
at org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:469)
at org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
at org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:184)
at org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
at org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
at org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:41)
at org.apache.camel.component.quartz.CamelJob.execute(CamelJob.java:69)
... 2 common frames omitted
Solution 1:[1]
After adding the closeFolder and disconnect options I could ride of the error
.pollEnrich("imaps://imap.web.de"
+ "?username=XXXXX&"
+ "password=XXXXX&"
+ "unseen=true&"
+ "closeFolder=false&"
+ "disconnect=false&"
+ "subject=FK100 - daily")
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | tree |
