JavaMail API と IMAP を使用して、メッセージがフォルダー a から b に移動されたことを知りたいです。リスナーを追加せずにどうすればそれを行うことができますか? アカウントにログインしてフォルダを開いたときに、メッセージの変更を検出したいということです。
問題は、フォルダー a に id 1 2 および 3 の 3 つのメッセージがあり、id 3 のメッセージをフォルダー B に移動すると、メッセージの id が変わり、id 1 のメッセージがフォルダー B にあることです。
私の目標は、メール サーバーのメッセージ構造を自分のローカル サーバーと同期させることです。すべてのメッセージ情報、フラグなどを自分で保持する必要があります。したがって、ログインするたびに、メールサーバーに保存されているメッセージに加えられたすべての変更を検出する必要があります。
次の方法で、新しいメールまたは未読メールを取得できます。
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.RECENT), true));
またはによって
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
しかし、新しいメールだけに興味があるわけではありません。たとえば、古いメールに加えられた変更についても知りたいです。
2 か月前に読んだメールが別のフォルダに移動されました。
私の考えは、
uid が変更されるため、メールの識別には使用できません。件名の送信者の受信日などのメール情報を使用し、それらのハッシュ値を作成し、ログインごとにメッセージのハッシュ値を比較する必要があると思います。ただし、パフォーマンスの問題が発生します。