Gmail API v1(Java)を使用して、
Gmailのメールの添付ファイルを取得する方法
についてご紹介します。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Gmail API] JavaでGmail APIを使う
を参照ください。
本文中の引数にある「メールアドレス」の指定は、
OAuth 2.0使用の場合は「me」(自身)と指定してください。
「me」は認証されたユーザーを示します。
No | 目次 | |
---|---|---|
1 | 添付ファイルを取得 | |
1 | スコープ | |
2 | 実行 | |
3 | レスポンスの内容 |
1. 添付ファイルを取得
メールの添付ファイルを取得します。
取得する添付ファイルIDは、MessagePartBodyのgetAttachmentIdで取得可能です。
それぞれの取得方法は下記の記事を参照ください。
・メールボックス
⧉[Gmail API] Javaでメールボックス内のメッセージを取得する
・下書き
⧉[Gmail API] Javaでメールの下書きを取得する
・変更履歴
⧉[Gmail API] Javaでメールボックスの変更履歴一覧を取得する
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_READONLY
⧉[Gmail API] JavaでGmail APIを使う(2.2 Gmailインスタンスを取得)
でスコープを指定してください。
1.2. 実行
MessagePartBody.getData()で添付ファイルのデータを
Base64 URLエンコード文字列で取得できます。
ファイルに出力したい場合は、MessagePartBody.decodeData()でデコードされた
byte配列を取得できるので、それをFileOutputStreamで出力します。
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.Attachments attachments = messages.attachments();
Gmail.Users.Messages.Attachments.Get get = attachments.get("メールアドレス", "メッセージID", "添付ファイルID");
MessagePartBody res = get.execute();
System.out.println(res);
//ファイルに出力したい場合
try(FileOutputStream fos = new FileOutputStream("ファイル出力パス")){
fos.write(res.decodeData());
}
}
1.2.1. HTTPリクエスト
GET: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/messages/{メッセージID}/attachments/{添付ファイルID}
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.3. レスポンスの内容
MessagePartBody
メソッド | 戻り値 | 説明 |
---|---|---|
getAttachmentId | String | 別のリクエストで取得できる外部添付ファイルID |
getSize | Integer | メッセージ部分データのバイト数 |
getData | String | 添付ファイル base64 urlエンコード文字列 |
おしまい。。