私はNNTPメッセージを読むためにGNU javamailを使用しています:
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 値を持つメッセージのみを返すことは確かに可能です。ヘッダーは次のようになります。
Xref: dur.bounceme.net gwene.com.economist:594
ただし、非常に大きなフォルダーに対してこれを行うのは少し面倒です。
私はこれが未知の問題ではないことを確かに見てきました.そして確かに私は車輪を再発明しています. 残念ながら、この場合、NNTP サーバー (この場合は localhost で実行されているLeafnode ) 上のメッセージをトリム (削除) する方法を判断できないため、私の車輪は丸くありません。
フォルダー全体を反復せずに、特定のしきい値を超えるメッセージを取得するにはどうすればよいですか? または、フォルダーからメッセージを削除するにはどうすればよいですか? また、削除された場合、leafnode はメッセージを削除しますか?
次のように簡単です。
message.setFlags(Flags.Flag.DELETED, true);
???
別の方法として、GNU Mailman を試しています。