diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java index 3dfbe61f72..d8ea530aa6 100755 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java @@ -179,7 +179,9 @@ public class ImapMailReceiver extends AbstractMailReceiver { try { this.pingTask = this.scheduler.schedule(this.idleCanceler, new Date(System.currentTimeMillis() + this.cancelIdleInterval)); - imapFolder.idle(); + if (imapFolder.isOpen()) { + imapFolder.idle(); + } } finally { imapFolder.removeMessageCountListener(this.messageCountListener); diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java index 7f536c2c1d..3d42cef851 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java @@ -250,7 +250,7 @@ public class ImapMailReceiverTests { assertThat(received.getPayload(), equalTo(TestMailServer.MailServer.MailHandler.MESSAGE + "\r\n")); } } - assertNotNull(channel.receive(10000)); // new message after idle + assertNotNull(channel.receive(20000)); // new message after idle assertNull(channel.receive(100)); // no new message after second and third idle verify(logger).debug("Canceling IDLE");