web-dev-qa-db-ja.com

javax.mailを使用してサーバー上のメールを削除する

説明されているように、IMAPプロトコルを使用してサーバーからメールを受信して​​います こちら 。これは非常にうまく機能しており、メールと添付ファイルをディスクに保存できます。

質問:サーバーからファイルを削除する可能性がありますか?利用可能、クライアントがすべての電子メールを受信しようとしたときに?もしそうなら、方法を教えてください。

34
Markus Lausberg

これは、標準APIを介して実行できるはずです。

最初に、削除したいMessage(またはメッセージ)への参照を取得する必要があります。それらを正常に読み取っていれば、すでにこれを実行できます。現在、明示的なdelete()操作はありませんが、次のようにメッセージを削除済みとしてマークできます。

message.setFlag(Flags.Flag.DELETED, true);

これにより、メッセージに削除済みのマークが付けられます(これは通常、デスクトップIMAPクライアントで削除操作が行われることです)。削除されたメッセージを強制的に消去するには、それらが存在するFolder(s)を使い終わったら、次を呼び出します。

folder.close(true);

ここで、trueフラグは、削除されたすべてのメッセージを消去するようにサーバーに指示します。

そして出来上がり!クライアントがIMAPクライアントを使用してサーバーに接続しても、これらのメッセージは表示されなくなります。

編集:

READ_WRITEモードでフォルダーを開くことを忘れないでください。そうしないと、メッセージがサーバーから実際に削除されません。

folder.open(Folder.READ_WRITE);

参照: http://Java.Sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting

65
Andrzej Doyle