LoginSignup
1
1

[Gmail API] Javaでメールボックス内のメッセージを取得する

Posted at

Gmail API v1(Java)を使用して、
Gmailのメールボックス内のメッセージを取得する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Gmail API] JavaでGmail APIを使う
を参照ください。

本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」(自身)と指定してください。
「me」は認証されたユーザーを示します。

No 目次
1 メッセージ一覧を取得
1 スコープ
2 実行
3 レスポンスの内容
2 メッセージを取得
1 スコープ
2 実行
3 レスポンスの内容

1. メッセージ一覧を取得

メールボックス内のメッセージ一覧を取得します。

一覧の取得ではメッセージの詳細内容までは取得できません。
詳細内容を取得したい場合は2. メッセージを取得を参照ください。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
GmailScopes.GMAIL_METADATA

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    
    Gmail.Users.Messages messages = users.messages();
    Gmail.Users.Messages.List list = messages.list("メールアドレス");
    
    ListMessagesResponse res = list.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

GET: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/messages
が実行されます。

1.2.2. クエリパラメータ

Gmail.Users.Messages.Listのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setMaxResults Long 返されるメッセージの最大数
setPageToken String リスト内の結果の特定のページを取得するためのページトークン
setQ String 検索するクエリ
Gmailの検索ボックスと同じクエリ形式
setLabelIds List<String> 指定するラベルID
setIncludeSpamTrash Boolean SPAMからのメッセージとTRASH結果にメッセージを含めるか

1.3. レスポンスの内容

ListMessagesResponse

フィールド メソッド 戻り値 説明
getNextPageToken String リスト内の結果の次のページを取得するためのトークン
getResultSizeEstimate Long 結果の推定合計数
getMessages List<Message> メッセージのリスト

Message

メソッド 戻り値 説明
getId String メッセージID
getThreadId String メッセージが属するスレッドID
getLabelIds List<String> このメッセージに適用されるラベルのIDのリスト
getSnippet String メッセージテキストの短い部分
getHistoryId String このメッセージを変更した最後の履歴レコードの ID
getInternalDate Long 内部メッセージ作成タイムスタンプ(エポックミリ秒)
getPayload MessagePart メッセージ部分の解析された電子メール構造。
getSizeEstimate Integer メッセージの推定サイズ(バイト単位)
getRaw String RFC2822形式で Base64URLエンコードされた文字列の電子メールメッセージ全体

MessagePart

メソッド 戻り値 説明
getPartId String メッセージ部分ID
getMimeType String メッセージ部分のMIMEタイプ
getFilename String 添付ファイルのファイル名
getHeaders List<MessagePartHeader> メッセージ部分のヘッダーのリスト
getBody MessagePartBody メッセージ部分の本文
getParts List<MessagePart> 子のMIMEメッセージ部分

MessagePartHeader

メソッド 戻り値 説明
getName String セパレータの前のヘッダーの名前
getValue String 区切り文字の後のヘッダーの値

MessagePartBody

メソッド 戻り値 説明
getAttachmentId String 添付ファイルID
getSize Integer メッセージ部分データのバイト数
getData String MIME メッセージ部分の本文データ(base64 url エンコード文字列)

2. メッセージを取得

メールボックス内のメッセージを取得します。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
GmailScopes.GMAIL_METADATA

⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。

2.2. 実行

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();
    
    Gmail.Users.Messages messages = users.messages();
    Gmail.Users.Messages.Get get = messages.get("メールアドレス","メッセージID");
    
    Message res = get.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

GET: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/messages/{メッセージID}
が実行されます。

2.2.2. クエリパラメータ

Gmail.Users.Messages.Getのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setMetadataHeaders List<String> 取得したいメッセージのメタデータのヘッダを指定
setFormat Format(enum) メッセージを返す形式

Format

定義値 説明
minimal 電子メールメッセージIDとラベルのみ取得
full フィールドで解析された本文コンテンツを含む完全な電子メール メッセージ データを取得
raw フィールド内の本文コンテンツを含む完全な電子メール メッセージデータを、base64でエンコードされた文字列で取得
metadata 電子メールメッセージID、ラベル、電子メールヘッダーを取得

2.3. レスポンスの内容

Message

1.3. レスポンスの内容(Message)の内容と同じです。



おしまい。。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1