2

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 が変更されるため、メールの識別には使用できません。件名の送信者の受信日などのメール情報を使用し、それらのハッシュ値を作成し、ログインごとにメッセージのハッシュ値を比較する必要があると思います。ただし、パフォーマンスの問題が発生します。

4

2 に答える 2

2

you can try using the rfc822-header information it contains a message-id like blablabla@mail.gmail.com which should not change when mails are moved into folders. but you will have to crawl all the mail-headers of the user to sync this, at least i don't know of a way to retrieve moved messages

于 2013-04-28T18:26:37.653 に答える