説明されているように、IMAPプロトコルを使用してサーバーからメールを受信しています こちら 。これは非常にうまく機能しており、メールと添付ファイルをディスクに保存できます。
質問:サーバーからファイルを削除する可能性がありますか?利用可能、クライアントがすべての電子メールを受信しようとしたときに?もしそうなら、方法を教えてください。
これは、標準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