JavaMail是否支持通过服务器推送通知新电子邮件?
如果是,那么该文件在哪里? 如果不是,是否有可以执行此操作的库?
答案 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: