2016-08-02 6 views
1

だから私はその後、私は、フォルダ検索したいのUIDJavaMailを使用して検索を行い、参照できるUIDを持つメッセージ配列を取得するにはどうすればよいですか?

IMAPStore store = (IMAPStore) session.getStore("imaps"); 
store.connect(); 
IMAPFolder folder = (IMAPFolder) store.getFolder(FOLDER_NAME); 
folder.open(Folder.READ_ONLY); 

とメッセージを取得する方法を把握しようとしています:

Message unreadMessages[] = 
    folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false)); 

をしかし、アレイ内のメッセージは、UIDをせずに返され、そうか後でそれらを参照するIDなしで処理するためにそれらを引き出しますか?

+0

そのIMAPFolderがUIDFolderが [リンク](https://javamail.java.net/nonav/docs/api/com/sun/mail/imap/IMAPFolder.html) – davesbrain

答えて

1

私はあなたがIMAP UIDについて話していると思いますが、あなたはIMAP UIDの仕組みを知っています。削除された答えはこれをうまく説明しました。 Folder.searchはあなたにたくさんのMessageオブジェクトを与えます。 UIDFolder.getUIDメソッドを使用すると、それらのMessageオブジェクトのそれぞれに対して反復処理を行い、対応するUIDを取得できます。 Folder.fetchメソッドを使用すると、単一のIMAPコマンドでそれらのUIDをプリフェッチできます。そのため、各Messageに対する繰り返しがUIDを取得するためにローカルで行われます。 UIDを保存すると、後でUIDFolderメソッドを使用して対応するMessageオブジェクトを取得できます。 UIDVALIDITYを確認することを忘れないでください。

+0

おかげで、私はので、苦労して実装していることは注目に値しますMessageオブジェクトにUIDが含まれていない理由を理解できませんでした – davesbrain

+0

IMAPメッセージだけにUIDがあるためです。 IMAP UIDサポートは、UIDFolderインターフェイスで表されます。私は、getUIDメソッドを使ってUIDMessageインターフェイスを持つことができたと思いますが、UIDがすべてフォルダを基準にしているので、UIDFolderメソッドにそのメソッドを置くのと同じように思えました。 –

関連する問題