Java 如何使用GNU NNTP标记已删除的邮件
我正在使用阅读NNTP消息:Java 如何使用GNU NNTP标记已删除的邮件,java,email,jakarta-mail,gnu,nntp,Java,Email,Jakarta Mail,Gnu,Nntp,我正在使用阅读NNTP消息: public List<Message> getMessages(Newsgroup newsgroup) throws MessagingException { LOG.fine("fetching.." + newsgroup); folder = root.getFolder(newsgroup.getNewsgroup()); folder.open(Folder.READ_ONLY); List<Mes
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);
}
public List getMessages(新闻组新闻组)抛出消息异常{
LOG.fine(“抓取..”+新闻组);
folder=root.getFolder(newsgroup.getNewsgroup());
文件夹。打开(文件夹。只读);
List messages=Arrays.asList(folder.getMessages());
LOG.fine(“…获取”+文件夹);
返回集合。不可修改列表(消息);
}
然而,我有一个索引问题,因为我不知道如何只发送新的或未读的消息
当然,可以迭代文件夹中的消息,解析标题,只返回外部参照值高于某个阈值的消息。标题如下所示:
Xref:dur.bounceme.net gwene.com.经济学家:594
然而,对于非常大的文件夹来说,这样做是一个非常困难的问题
我肯定看到这不是一个未知的问题,我肯定是在重新发明轮子。不幸的是,在本例中,我的轮子甚至不圆,因为我无法确定如何修剪(删除)NNTP服务器上的消息(在本例中,是在localhost上运行的)
在不迭代整个文件夹的情况下,如何获取超过某个阈值的邮件?或者,如果它们被删除,leafnode会删除这些消息吗
简单到:
message.setFlags(Flags.Flag.DELETED,true)代码>
另一种选择是。您是否将NNTP与IMAP混为一谈?通常不允许客户端从NNTP服务器删除邮件。我的目的不是删除邮件,而是将邮件标记为已读,以消除重复下载。可能不是标志。已删除
,而是标志。已看到
?如何避免重复?因为NNTP服务器根本不关心客户端状态,所以需要跟踪客户端中的读取状态。