2

アプリケーションで通知をテストするために、JavaMail を使用してこれらの通知を確認しています。添付ファイルの有無にかかわらず、通知のテストがあります。最初のテストは、添付ファイルのない電子メールに対して正常に実行されます。確認したら、メールを削除し、アプリケーションから添付ファイル付きの別の通知を送信します。今、私は問題に直面しています。私の受信トレイには 1 つのメールがありますが、2 つのスレッドがあります (添付ファイルのない最初のメールと添付ファイルのある最新のメールは両方とも同じ件名であるため、同じメールで 2 つのスレッドになります)。私のコードは、添付ファイル付きの電子メールを想定しているため、エラーをスローしますが、代わりに添付ファイルなしで読み取ります。これは、以前の通知が正しく削除されていないということですか? これが私がやった方法です:

//If all messages are read, mark the latest read message as deleted
if(folder.getUnreadMessageCount() == 0){
    message.setFlag(Flags.Flag.DELETED, true);
}

//If any message is marked deleted, delete that message from folder
if(message.isSet(Flags.Flag.DELETED)){
    folder.expunge();
}

また、最初の通知が完全に削除されることを 100% 確実にするために、以下を追加しました。

folder.close(true);

何か不足していますか?または、メール内のスレッドを区別する方法はありますか?

4

2 に答える 2

1

メッセージを正しく削除しているように見えますが、実際に何が起こっているかを確認するために、セッション デバッグをオンにしてプロトコル トレースを確認することをお勧めします。手順については、 JavaMail FAQを参照してください。

于 2012-05-16T19:35:57.687 に答える
0

これを試してみて、魅力のように働きました。

//Get Trash folder to copy messages that are read 
Folder trash = store.getFolder("[Gmail]/Trash");
trash.open(folder.READ_WRITE);

//If all messages are read, delete the latest message 
if(folder.getUnreadMessageCount() == 0)
{
    folder.copyMessages(new Message[] {message}, trash);
}
于 2012-05-17T20:16:16.087 に答える