42

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

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

4

1 に答える 1

79

これは、標準 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

于 2009-09-23T10:14:03.690 に答える