Поддерживает ли JavaMail сервер-push? - PullRequest
11 голосов
/ 08 декабря 2010

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

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

Ответы [ 2 ]

11 голосов
/ 07 января 2011

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

1 голос
/ 16 декабря 2010

Событие Store слушает уведомления, выданные вашим внутренним магазином:

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

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

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

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

...