2012-02-07 9 views
0

私はGMAILからすべての電子メールを読み込んで、電子メールの属性の一部を保持する自己作成クラスのオブジェクトに実行時間を保存するJavaアプリケーションを開発しています。今私は電子メールオブジェクトを削除したいと思います。私はそれをインターネットからも削除したいのです。そうするためには、私が言及しているその特定の電子メールを削除するためにGMAILアカウントに照会するための情報が必要になります。それを行う可能な方法はありますか?たぶんヘッダーを保存してからそれを検索しますか?私はそれを行う良い方法を見つけることができませんでした。特定の電子メールを追跡するJavamailライブラリ

答えて

2

あなたはIMAPでGMAILにアクセスしていると仮定します。その後、メッセージを保存し、Message.setFlag(Flag.DELETED)に電話して、フォルダを消去するか、自分でフォルダを検索します。または、Google Gmail apiを検索してより良い方法を見つけることができます。たとえば、the unique message ID

更新日これはあなたを助けることができるGoogleのプロジェクトです:java-gmail-imap。 OAuth認証のためのa companion projectもあります(サンプルを実行するために必要です)。

+0

あなたの答えに感謝します。 –

0

Jamesをご覧ください。

Apache James Projectは、高度なエンタープライズメールサーバーを構築するインターネットメール通信に関連して、Javaで書かれた豊富なオープンソースモジュールとライブラリを提供しています。

0

メッセージにアクセスしてから削除するまでの時間によって異なります。それが短く、フォルダがまだ開いている場合は、DELETEDフラグを設定し、フォルダを閉じてメッセージを消去することができます。

でも、後でメッセージを見つける必要があると仮定しています。その場合は、IMAP UIDについて学ぶ必要があります。詳細は、UIDFolder interface in JavaMailおよびIMAP specを参照してください。本質的には、フォルダのUIDVALIDITY値とメッセージのUID値を追跡する必要があります。フォルダに戻ったときは、UIDVALIDITYの値をチェックして同じフォルダになっていることを確認し、そのUIDに基づいてメッセージをルックアップすることができます。

+0

実際、私が提案したように、GMailはフォルダ間で有効なUID拡張を持っています[リンク](http://code.google.com/intl/en-US/apis/gmail/imap/#x-gm-msgid) – Raffaele

+0

はい現在のところ、JavaMailを使用して簡単にアクセスする方法はありません。 –

+0

[このプロジェクト](http://code.google.com/p/java-gmail-imap/)が役立ちます。私はそれがとても難しいとは思っていませんでした:/とにかくGMail固有の拡張機能を使用すると、スレッド、ラベル、生の検索機能を考えると、 – Raffaele

関連する問題