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 レスポンスの内容

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エンコード文字列


おしまい。。
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