Поддерживает ли JavaMail серверное нажатие?

Поддерживает ли JavaMail уведомление о новых сообщениях через push-сервер?

Если да, то где документация для этого? Если нет, есть ли библиотека, которая может это сделать?

Ответ 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. Если вы не хотите, чтобы все они были на разных потоках (плохая идея).

Ответ 2

Событие "Сохранение" прослушивает уведомления, выпущенные вашим бэкэнд-магазином:

http://java.sun.com/products/javamail/javadocs/javax/mail/event/StoreEvent.html

Но, по моему опыту, java-почтовые документы настолько тонкие, что лучший способ узнать, что происходит, - это самостоятельно отлаживать процесс.

Это отличный многопользовательский ресурс; Часто задаваемые вопросы по JavaMail:

http://www.oracle.com/technetwork/java/faq-135477.html