我正在使用java邮件API实现IMAP客户端。我想要通知有关邮件计数和对邮件所做的更改(读取/未读等)。对于这一点,我已经写了两个侦听器打开的IMAP文件夹,如下所示:IMAP messageChangedListener()未被触发
IMAPStore imapStore = (IMAPStore) session.getStore("imaps");
imapStore.connect();
final IMAPFolder folder = (IMAPFolder) imapStore.getFolder("Inbox");
folder.open(IMAPFolder.READ_WRITE);
folder.addMessageCountListener(new MessageCountListener() {
public void messagesAdded(MessageCountEvent e) {
System.out.println("Message Count Event Fired");
}
public void messagesRemoved(MessageCountEvent e) {
System.out.println("Message Removed Event fired");
}
});
folder.addMessageChangedListener(new MessageChangedListener() {
public void messageChanged(MessageChangedEvent e) {
System.out.println("Message Changed Event fired");
}
});
而且我发送IMAP IDLE命令到服务器在一个单独的线程,如下。
Thread t = new Thread(new Runnable() {
public void run() {
try {
while (true) {
folder.idle();
}
} catch (MessagingException ex) {
//Handling exception goes here
}
}
});
t.start();
但问题是“MessageCountListener”在每次发送新邮件或删除邮件时都会触发。但是当邮件发生变化时,“MessageChangedListener”未被触发。
非常感谢你的评论香农。我正在使用Gmail帐户进行测试。希望他们提供设施。 –
是的,你是对的。我试着用另一台IMAP服务器,它工作正常。似乎令人惊讶的是,谷歌不提供消息更改通知。任何想法如何解决? –
您会在JavaMail wiki中发现与[使用Gmail与JavaMail](http://kenai.com/projects/javamail/pages/Gmail)相关的一些问题。您还可以在Gmail帮助页面找到[Gmail IMAP实施中的限制]列表(http://support.google.com/mail/bin/topic.py?hl=zh-CN&topic=1668982&parent=1668981&ctx=topic) 。 –