2016-04-11 17 views
0

メールを受信したら、受信トレイを開いてメッセージを取得します。どのように私は以前のメッセージの配列にそれらを比較することができます、私はすでに私がそれらを読んだことを知っている?Java Mail:新しいメールを認識する方法

Properties properties = new Properties(); 
properties.put("mail.imaps.host", host); 
properties.put("mail.imaps.port", "993"); 
Session emailSession = Session.getDefaultInstance(properties); 

//2) create the POP3 store object and connect with the pop server 
Store emailStore = emailSession.getStore("imaps"); 
emailStore.connect(user,pw); 

//3) create the folder object and open it 
Folder emailFolder = emailStore.getFolder("INBOX"); 
emailFolder.open(Folder.READ_ONLY); 
Message[] messages = emailFolder.getMessages(); 
+0

は、前のメッセージを保存する必要があることを確認していますか?受信トレイからのメッセージをイベントとして読み込みます。だから、あなたはいつも新しいメッセージを読んだ後、同じメッセージを2回読むことはできません。 –

+0

よく私のアプリはメールの一部を表示します。私はそのリストからメールを削除する場合、私はフォルダをリフレッシュするときに再表示したくありませんが、私はすべてのメールを再度取得します。 もちろん、date、from、subjectなどを比較することはできますが、前回受信したメッセージにすでにメッセージが含まれているかどうかを確認する方法はありますか? – Ginso

答えて

0

どのように対処するかは、要件に応じて異なります。たとえば、他のアプリケーションやユーザーがアプリケーションと同時にメールボックスにアクセスすることはありますか?または、アプリケーションがメールボックスへの専用アクセスを持っていますか?

use the SEEN flag to find messages that you haven't already readとすることができます。

最後に処理したメッセージのIMAP UID(およびそのフォルダのUIDVALIDITY)を保存して、後で大きなUIDを持つメッセージを検索することもできます。詳細については、UIDFolderインターフェイスを参照してください。

(ポップについてのあなたのコードの話が、あなたのコード内のコメントは、IMAPを使用している;。あなたはPOP3プロトコルanswers are quite differentを使用する必要がある場合)

+0

タンク、そのUIDは、私が探していたものです。私はちょうどそのフォルダを見てアイデアを持っていないと、メッセージ自体は、フォルダの内容が変更された場合、 "再割り当て"することができるメッセンジャー番号だけを提供します。しかし、私は、メッセージが削除された場合、UIDは再利用されないと思います – Ginso

関連する問題