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)と同じです。
おしまい。。