Spring integration javax.mail.FolderClosedException:*再见JavaMail异常:javax.net.ssl.ssLexException:IMAP的连接超时(读取失败)

Spring integration javax.mail.FolderClosedException:*再见JavaMail异常:javax.net.ssl.ssLexException:IMAP的连接超时(读取失败),spring-integration,jakarta-mail,Spring Integration,Jakarta Mail,请帮助我解决此异常。我在Spring Boot Java应用程序中运行这个IMAP电子邮件侦听器,从我的gmail收件箱检索电子邮件 return IntegrationFlows .from(Mail.imapIdleAdapter(imapUrl()) .autoStartup(true) .javaMailProperties(p -> p.put("mail.imap.ssl.trust

请帮助我解决此异常。我在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服务器?还是有其他推荐的方法?再次感谢

请看Max的评论。我同意:我们失去连接是很正常的。 请参阅警告消息:

无法执行空闲任务。将尝试在10000毫秒后重新提交

从逻辑上讲:

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


偶尔的网络故障是互联网上的现实。您的系统应该能够恢复、重新连接并恢复。没有办法保证你的插座能全天候工作。确保您的(springs?)空闲处理程序至少每29分钟戳一次服务器,以保持空闲状态。嗨,Max,感谢您的响应!您建议如何使用上述功能拨动gmail服务器?如果问题清楚,或者可以更好地提问,则道歉。非常感谢。我尝试添加“mail.timeout”和“mail.imaps.timeout”以及“mail.imaps.connectiontimeout”来自动触发超时,以便IMAP自动重新连接,但这似乎不起作用hi@Arten感谢您的回复。问题是,在尝试重新连接一段时间后,它无法重新连接,当它最终重新连接时,它不再接收电子邮件。不确定处理这个问题的正确方法,有什么想法吗?嗯,你使用什么Spring集成版本?试用最新版本-
5.3.0
我目前正在使用5.2.5,将切换到最新版本,看看是否有任何变化,谢谢。是的,请。这一行的最新版本是
5.2.6
anyway,但不幸的是,它不起作用。您是否认为有可能是因为我在属性中使用了“imap”而不是“imap”?
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);
            }
        }
    }

}