ここで説明されているように、IMAP プロトコルを使用してサーバーからメールを受信しています。これは非常にうまく機能しており、電子メールと添付ファイルをディスクに保存できます。
質問: クライアントがすべての電子メールを受信しようとしたときに、サーバーからファイルを削除して、それらのファイルを使用できないようにすることはできますか? もしそうなら、方法を教えてください。
これは、標準 API を介して実行できるはずです。
最初に、Message
削除する (またはメッセージ) への参照を取得する必要があります。それらを正常に読み取れている場合は、既にこれを行うことができます。現在、明示的な delete() 操作はありませんが、次のようにメッセージを削除済みとしてマークできます。
message.setFlag(Flags.Flag.DELETED, true);
これにより、メッセージが削除済みとしてマークされます (これは通常、デスクトップ IMAP クライアントで削除操作が行うことです)。削除されたメッセージを強制的に消去するにはFolder
、それらが存在する (複数可) の処理が終了したら、次のように呼び出します。
folder.close(true);
true フラグは、削除されたすべてのメッセージを消去するようにサーバーに指示します。
そして出来上がり!IMAP クライアントを使用してサーバーに接続するときに、クライアントにこれらのメッセージが表示されることはなくなります。
編集:
フォルダーを READ_WRITE モードで開くことを忘れないでください。そうしないと、メッセージがサーバーから実際に削除されません。
folder.open(Folder.READ_WRITE);
参照: http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting