javax.mail.FolderClosedException。* BYE JavaMail Exception: javax.net.ssl.SSLException: IMAP的连接已超时(读取失败)。

问题描述 投票:1回答:1

请帮助我解决这个异常。我在Spring Boot Java应用程序中运行这个IMAP电子邮件监听器,以从我的gmail收件箱中检索电子邮件。

 return IntegrationFlows
         .from(Mail.imapIdleAdapter(imapUrl())
                   .autoStartup(true)
                   .javaMailProperties(p -> p.put("mail.imap.ssl.trust", "*")
                                             .put("mail.imap.ssl.enable", "true"))
                   .shouldMarkMessagesAsRead(false)
                   .shouldDeleteMessages(false)
                   .shouldReconnectAutomatically(true)
                   .autoCloseFolder(false))
         .handle(m-> myService.process(MimeMessage))
         .get();

偶尔我在更高的环境中会得到以下异常

 javax.mail.FolderClosedException: * BYE JavaMail Exception:
 javax.net.ssl.SSLException: Connection timed out (Read failed)
     at com.sun.mail.imap.IMAPFolder.handleIdle(IMAPFolder.java:3316)

导致

2020-05-20 18:06:27.264  WARN 1 --- [ask-scheduler-1] o.s.i.mail.ImapIdleChannelAdapter        : Failed to execute IDLE task. Will attempt to resubmit in 10000 milliseconds.

我想知道你会建议如何处理这个问题? 通过用'mail.timeout'属性戳破gmail服务器?还是有其他推荐的方法?再次感谢您

spring-integration javamail
1个回答
0
投票

参见Max的评论。我同意:这真的是正常的,我们得到一个连接丢失.看到那个警告信息。

执行IDLE任务失败。将在10000毫秒后尝试重新提交。

而且它的逻辑是这样的。

this.receivingTask = scheduler.schedule(new ReceivingTask(), this.receivingTaskTrigger);

...

private class ReceivingTask implements Runnable {

    ReceivingTask() {
    }

    @Override
    public void run() {
        if (isRunning()) {
            try {
                ImapIdleChannelAdapter.this.idleTask.run();
                logger.debug("Task completed successfully. Re-scheduling it again right away.");
            }
            catch (Exception e) { //run again after a delay
                if (logger.isWarnEnabled()) {
                    logger.warn("Failed to execute IDLE task. Will attempt to resubmit in "
                            + ImapIdleChannelAdapter.this.reconnectDelay + " milliseconds.", e);
                }
                ImapIdleChannelAdapter.this.receivingTaskTrigger.delayNextExecution();
                publishException(e);
            }
        }
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.