我正在使用GNU javamail来阅读 NNTP 消息:
public List<Message> getMessages(Newsgroup newsgroup) throws MessagingException {
LOG.fine("fetching.." + newsgroup);
folder = root.getFolder(newsgroup.getNewsgroup());
folder.open(Folder.READ_ONLY);
List<Message> messages = Arrays.asList(folder.getMessages());
LOG.fine("..fetched " + folder);
return Collections.unmodifiableList(messages);
}
但是,我遇到了索引问题,因为我无法弄清楚如何只发送新消息或未读消息。
当然可以迭代文件夹中的消息,解析标题,并且只返回外部参照值高于某个阈值的消息。标题是这样的:
Xref: dur.bounceme.net gwene.com.economist:594
但是,对于非常大的文件夹,这样做有点麻烦。
我当然已经看到这不是一个未知的问题,而且我肯定是在重新发明轮子。不幸的是,在这种情况下,我的轮子甚至不是圆形的,因为我无法确定如何修剪(删除)NNTP 服务器上的消息(在这种情况下,Leafnode在本地主机上运行)。
在不迭代整个文件夹的情况下,如何获取超过某个阈值的消息?或者,我如何从文件夹中删除消息,如果它们被删除,leafnode 会删除这些消息吗?
它很简单:
message.setFlags(Flags.Flag.DELETED, true);
???
作为替代方案,我正在尝试 GNU Mailman。