0

Java Mail API を使用して gmail アカウントにアクセスしています (未修正)。特定のメール ID () のすべてのメールを検索する必要があります。検索は、指定された ID を持つメッセージが最初に出現したときに終了する必要があります (最適化: 指定された ID を持つ単一のメールのみが存在する必要があります)。

もちろん、「すべてのメール」フォルダをスキップしたいと思います。

最も簡単な方法は次のとおりです。

  1. デフォルトフォルダを取得
  2. デフォルトですべてのフォルダを取得します。
    1. 現在のフォルダーで MessageIDTerm を使用して検索する
    2. メッセージが見つからない場合は、サブフォルダーに対して手順 2 を再帰的に繰り返します
    3. それ以外の場合は、見つかったフォルダーを返します。

これにより、不要な無駄なサーバー呼び出しが多数発生します。より最適なアプローチはありますか?

4

2 に答える 2

2

私がこのすべてのものをいじってから何年も経ちましたが、できるはずです:

  • IMAP4 UID指定された ID (または ID の範囲) を検索するコマンドを使用します。RFC3501のセクションを参照6.4.8
  • これをオブジェクトで使用し、doCommand()必要IMAPFolderに応じてフォルダーを繰り返します。
于 2009-08-28T14:17:25.217 に答える
0
folder.list("*");

フォルダの全リストを再帰的に返すメソッドです。したがって、フォルダに対してループを 1 回だけ実行する必要があります。そしてもちろん、検索で見つかったメッセージごとに 1 つのループです。

于 2009-09-07T07:31:08.263 に答える