2016-07-13 3 views
0

Javamail APIを使用してGmail IMAPサーバーからメールを取得しています。Javamail Apiを使用してメールを1つずつ取得する

私はMessage[] messages = inbox.search(term)を使用して、サーバーからすべての電子メールを取得しています。代わりに私はメールを1つずつ取得して、配列全体を取得するのではなくデータベースに1つずつ保存できるようにしました。これにより、別のサービスがすべての電子メールが来るのを待つ代わりに解析することができます。それは時間がかかるプロセスであるためです。

+0

最初にメッセージのリスト(https://developers.google.com/gmail/api/v1/reference/users/messages/list)を取得して、「maxResults」を1に制限すると、メッセージID (https://developers.google.com/gmail/api/v1/reference/users/messages/get)個別に取り出してください。それを 'read'とマークする必要があります。 :https://developers.google.com/gmail/api/v1/reference/users/messages/modify)すべてのメッセージを取得するまでこの手順を繰り返してください。 – ochi

+0

これが機能する場合は試してみましょう。しかし、これはapiが提供するものですか? –

+0

私はあなたの質問を理解しているか分からない、私は自分のコメントに関連APIリンクを追加しました。他のものを探しているのですか、別のAPIについて話していますか? – ochi

答えて

3

検索方法では、サーバーからのすべてのメッセージのデータが取得されず、一致するメッセージのメッセージ番号のみがサーバーから取得されます。 Messageオブジェクトのメソッドを呼び出してデータの一部を要求するまで、返されるMessageオブジェクトにはデータは含まれません。それらはサーバー上のメッセージへの参照に過ぎません。

検索呼び出しが遅すぎると、メッセージのデータがクライアントに返されているためではありません。サーバーがメッセージの検索を遅くしているためです。 JavaMail debuggingをオンにすると、クライアントが要求するものとサーバーが返すものを正確に見ることができます。

メッセージデータを必要に応じてフェッチするのではなく、先読みする場合は、Folder.fetchメソッドを使用できます。

+0

これはかなり役に立ちました:D –

関連する問題