Вы должны использовать функцию IMAPFolder idle
для выдачи команды простоя на сервер. Затем он будет прослушивать события, такие как новая почта или удаленная почта. (См. Спецификации IMAP, чтобы увидеть, как выглядят сообщения). И вы должны использовать MessageCountListener
для выполнения кода при изменении количества писем в почтовом ящике.
Функция бездействия IMAP точно предназначена для имитации функции «push».
http://java.sun.com/products/javamail/javadocs/javax/mail/event/MessageCountListener.html
http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html
Извините, я не опубликовал код, который показывает, как это используется. Я не хотел тратить свое время, так как в Интернете есть много доступных примеров, если вы ищете этот материал.
Но имейте в виду, что этот метод не будет работать для более чем одной учетной записи IMAP, поскольку блоки команд бездействия. Если вы не хотите, чтобы они все были в разных темах (плохая идея).