JavaMail是否支持服务器推送?

时间:2010-12-08 16:48:13

标签: email push javamail

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

如果是,那么该文件在哪里? 如果不是,是否有可以执行此操作的库?

2 个答案:

答案 0 :(得分:11)

您应该使用IMAPFolder的idle函数向服务器发出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

抱歉,我没有发布任何显示如何使用它的代码。我不想浪费我的时间,因为如果你搜索这些东西,互联网上有许多现成的例子。

但是要预先警告,由于idle命令阻塞,此方法不适用于多个IMAP帐户。除非你想要它们都在不同的线程上(糟糕的主意)。

答案 1 :(得分:1)

Store事件侦听后端存储发出的通知:

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

但根据我的经验,java邮件文档如此稀薄的地方,找出正在发生的事情的最佳方法是自己调试整个过程。

这也是一个很棒的全方位资源; JavaMail FAQ:

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