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 添付ファイルなし
1 スコープ
2 実行
3 レスポンスの内容
2 添付ファイルあり
1 スコープ
2 実行
3 レスポンスの内容
2 下書きを更新
1 添付ファイルなし
1 スコープ
2 実行
3 レスポンスの内容
2 添付ファイルあり
1 スコープ
2 実行
3 レスポンスの内容
3 下書きを削除
1 スコープ
2 実行
3 レスポンスの内容
4 下書きを送信
1 スコープ
2 実行
3 レスポンスの内容

1. 下書きを作成

メールボックス内に下書きを作成します。

1.1. 添付ファイルなし

添付ファイルがない下書きを作成する場合です。

1.1.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

1.1.2. 実行

Draftにメッセージをセットして送信します。

createMimeMessage()、createMessage()の説明は、
⧉[Gmail API] Javaでメッセージ本文を作成する
を参照ください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    
    Draft content = new Draft();
    MimeMessage mime = createMimeMessage("Toメールアドレス","件名","本文");
    Message message = createMessage(mime);
    content.setMessage(message);
    
    Gmail.Users.Drafts.Create create = drafts.create("メールアドレス",content);

    Draft res = create.execute();
    System.out.println(res);
}
1.1.2.1. HTTPリクエスト

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

1.1.2.2. クエリパラメータ

クエリパラメータはありません。

1.1.2.3. リクエストボディ

Gmail.Users.Draftsのsetメソッドにより、リクエストボディを設定できます。

メソッド 引数 説明
setMessage Message 下書きのメッセージの内容

Message(Set)

メソッド 引数 説明
setId String メッセージID
setThreadId String メッセージが属するスレッドID
setLabelIds List<String> このメッセージに適用されるラベルIDリスト
setSnippet String メッセージテキストのスナップショット
setHistoryId String このメッセージを変更した最後の履歴レコードID
setInternalDate Long 内部メッセージ作成タイムスタンプ(エポックミリ秒)
setPayload MessagePart メッセージ部分の解析された内容
setSizeEstimate Integer メッセージの推定サイズ(バイト単位)
setRaw String Base64 URLエンコードされたメッセージ

MessagePart(Set)

メソッド 引数 説明
setPartId String メッセージ部分ID
setMimeType String メッセージ部分のMIMEタイプ
setFilename String 添付ファイルのファイル名
setHeaders List<Header> メッセージ部分のヘッダーリスト
setBody MessagePartBody メッセージ部分の本文
setParts List<MessagePart> 子のMIMEメッセージ部分

Header(Set)

メソッド 引数 説明
setName String セパレータの前のヘッダーの名前。例:"To"
setValue String 区切り文字の後のヘッダー値

MessagePartBody(Set)

メソッド 引数 説明
setAttachmentId String 添付ファイルID
setSize Integer メッセージ部分データのバイト数
setData String Base64 URLエンコードされたメッセージ部分の本体データ

1.1.3. レスポンスの内容

Draft

メソッド 戻り値 説明
getId String ドラフトID
getMessage 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 エンコード文字列)

1.2. 添付ファイルあり

添付ファイルがある下書きを作成する場合です。

1.2.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

1.2.2. 実行

Draftにメッセージをセットして送信します。
複数の送信予定のファイルを設定して下書きを作成しています。

createMimeMessage()、createMessage()の説明は、
⧉[Gmail API] Javaでメッセージ本文を作成する
を参照ください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    
    Draft content = new Draft();
    Map<String,String> files = new HashMap<>();
    files.put("ファイル名1", "ファイルパス1");
    files.put("ファイル名2", "ファイルパス2");
    
    MimeMessage mime = createMimeMessage("Toメールアドレス","件名","本文",files);
    Message message = createMessage(mime);
    content.setMessage(message);
    Gmail.Users.Drafts.Create create = drafts.create("メールアドレス",content);

    Draft res = create.execute();
    System.out.println(res);
}
1.2.2.1. HTTPリクエスト

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

1.2.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.2.3. リクエストボディ

Gmail.Users.Draftsのsetメソッドにより、リクエストボディを設定できます。

1.1. 添付ファイルなし(1.1.2.3. リクエストボディ)と同じです。

1.2.3. レスポンスの内容

Draft

1.1. 添付ファイルなし(1.1.3. レスポンスの内容)と同じです。

2. 下書きを更新

指定した下書きを更新します。
更新の場合、下書きで設定されたメッセージは完全に破棄され、更新で指定した
新しいメッセージに更新されます。

2.1. 添付ファイルなし

添付ファイルがない下書きを更新する場合です。

2.1.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

2.1.2. 実行

Draftにメッセージをセットして下書きを更新します。
ドラフトIDは、DraftのgetId()で取得できる値を指定してください。

createMimeMessage()、createMessage()の説明は、
⧉[Gmail API] Javaでメッセージ本文を作成する
を参照ください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    
    Draft content = new Draft();
    MimeMessage mime = createMimeMessage("Toメールアドレス","新しい件名","本文");
    Message message = createMessage(mime);
    content.setMessage(message);
    
    Gmail.Users.Drafts.Update update = drafts.update("メールアドレス","ドラフトID",content);

    Draft res = update.execute();
    System.out.println(res);
}
2.1.2.1. HTTPリクエスト

PUT: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/drafts/{ドラフトID}
が実行されます。

2.1.2.2. クエリパラメータ

クエリパラメータはありません。

2.1.2.3. リクエストボディ

Gmail.Users.Draftsのsetメソッドにより、リクエストボディを設定できます。

1.1.2.3. リクエストボディと同じです。

2.1.3. レスポンスの内容

Draft

1.1.3. レスポンスの内容と同じです。

2.2. 添付ファイルあり

添付ファイルがある下書きを更新する場合です。

2.2.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

2.2.2. 実行

Draftにメッセージをセットして送信します。
複数の送信予定のファイルを設定して下書きを更新しています。

createMimeMessage()、createMessage()の説明は、
⧉[Gmail API] Javaでメッセージ本文を作成する
を参照ください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    
    Draft content = new Draft();
    Map<String,String> files = new HashMap<>();
    files.put("ファイル名1", "ファイルパス1");
    files.put("ファイル名2", "ファイルパス2");
    
    MimeMessage mime = createMimeMessage("Toメールアドレス","件名","本文",files);
    Message message = createMessage(mime);
    content.setMessage(message);
    Gmail.Users.Drafts.Update update = drafts.update("メールアドレス","ドラフトID",content);

    Draft res = create.execute();
    System.out.println(res);
}
2.2.2.1. HTTPリクエスト

GET: https://gmail.googleapis.com/upload/gmail/v1/users/{メールアドレス}/drafts/{ドラフトID}
が実行されます。

2.2.2.2. クエリパラメータ

クエリパラメータはありません。

2.2.2.3. リクエストボディ

1.1. 添付ファイルなし(1.1.2.3. リクエストボディ)と同じです。

2.2.3. レスポンスの内容

Draft

1.1. 添付ファイルなし(1.1.3. レスポンスの内容)と同じです。

3. 下書きを削除

指定した下書きを削除します。

3.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

3.2. 実行

下書きを削除します。
ドラフトIDは、DraftのgetId()で取得できる値を指定してください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    Gmail.Users.Drafts.Delete delete = drafts.delete("メールアドレス","ドラフトID");

    delete.execute();
}
3.2.1. HTTPリクエスト

DELETE: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/drafts/{ドラフトID}
が実行されます。

3.2.2. クエリパラメータ

クエリパラメータはありません。

3.2.3. リクエストボディ

リクエストボディはありません。

3.3. レスポンスの内容

レスポンスはありません。
削除に失敗した場合、例外が発生します。

4. 下書きを送信

指定した下書きを送信します。

4.1. スコープ

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

GmailScopes.MAIL_GOOGLE_COM
GmailScopes.GMAIL_MODIFY
GmailScopes.GMAIL_COMPOSE

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

4.2. 実行

Draftに送信したいドラフトIDをセットして下書きを送信します。
ドラフトIDは、DraftのgetId()で取得できる値を指定してください。

public static void main(String[] args) throws Exception{
    Gmail gmail = getGmail();
    Gmail.Users users = gmail.users();

    Gmail.Users.Drafts drafts = users.drafts();
    Draft content = new Draft();
    content.setId("ドラフトID");
    Gmail.Users.Drafts.Send send = drafts.send("メールアドレス",content);

    Message res = send.execute();
    System.out.println(res);
}
4.2.1. HTTPリクエスト

添付ファイルがない場合、
POST: https://gmail.googleapis.com/gmail/v1/users/{メールアドレス}/drafts/send

添付ファイルがある場合、
POST: https://gmail.googleapis.com/upload/gmail/v1/users/{メールアドレス}/drafts/send

が実行されます。

4.2.2. クエリパラメータ

クエリパラメータはありません。

4.2.3. リクエストボディ

Gmail.Users.Draftsのsetメソッドにより、リクエストボディを設定できます。

1.1.2.3. リクエストボディと同じです。

4.3. レスポンスの内容

Message

1.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