2010-12-08 98 views
10

JavaMail是否支持通过服务器推送通知新电子邮件?JavaMail支持服务器推送吗?

如果是,那么文档在哪里? 如果不是,有没有可以做到的图书馆?通过你的后台存储发出通知

回答

10

你应该使用IMAPFolder的idle功能发出闲置命令到服务器。然后,它将监听事件,例如新邮件或已删除的邮件。 (请参阅IMAP规范以查看消息的外观)。你应该使用MessageCountListener在邮箱中的邮件数量发生变化时执行代码。

IMAP的空闲功能恰恰意味着模仿“推送”功能。

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

存储事件监听:

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

但在我的经验,Java邮件文档是所以薄的地方,即找出最好的方法是什么继续,就是要通过这个过程自己进行调试。

这是一个很棒的全能资源;了JavaMail FAQ:

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

+0

嗯,在关于服务器推送的常见问题解答中没有任何内容:/ – Timo 2010-12-17 09:17:32

+0

我以为你想用某种方式的java邮件来收听邮件到达时从服务器发送的通知。对不起,如果我误解了! – davek 2010-12-17 09:29:25