私はちょうどこれを正確に行うことになっているのだろうかと思います:
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
Message messages[] = imap.folder_.search(ft);
int nbTotalUnreadMessages = messages.length;
// make a loop over the messsages to make some procedure
VS:
Message[] messages = imap.folder_.getMessages();
for (int i = 0; i < messages.length; i++) {
Message msg = messages[i];
Flags flags = msg.getFlags();
if ( flags.contains(Flags.Flag.SEEN) )
continue;
// proceed on the unseen message
}
最初のバージョンは高速で点灯し、正常に機能します。2番目のバージョンは1/遅い2/動作しません。フォルダ全体を解析するため低速であり、ドキュメントに記載されているように、メッセージを自動的に取得する唯一の事実はメッセージが表示されたと想定するため、機能しません。
では、最初のバージョンは内部で何をすることになっているのでしょうか。好奇心がないのですが…メッセージ自体を取得せずにメッセージのフラグを取得することは可能ですか?