Ответ 1
Вы должны использовать функцию IMAPFolder idle
, чтобы выпустить команду 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, поскольку блоки команды idle. Если вы не хотите, чтобы все они были на разных потоках (плохая идея).