はじめに
Javaで GMail API を叩いてメール送信するところを軽く試してみましたのでまとめます。
なお本例ではメールアカウント所有者に成り代わってメール送信するため、
送信前に OAuth認証 でアカウント所有者から許可を得る必要があります。
※ アカウント所有者に認証させる代わりにサービスアカウントを使用するパターンは こちら で。
概要
必要なもの
- GCPプロジェクト
- Gmailアカウント
- サンプルソース
環境の作成手順
サンプルソースの処理フロー
何はともあれ動かしてみたい
そんな感じで試してみます。
実行環境を作成する
(a-1) GCPにプロジェクト作成
GCP で適当にプロジェクトを用意します。
(a-2) APIを有効にする
該当プロジェクトで APIとサービス で Gmail API を探して有効にします。
次の通り。
(a-3) ソース準備
GitHubから取得 して 送信先メアド を適当に修正してください。
送信元メアドは認証画面で許可した人のものが使われます。
なお公式ガイドは次の場所にあり、今回のサンプルはほぼこちらから(以下略)
(a-4) プロジェクトのOAuth2.0クライアントID取得
まず適当にOAuth同意画面を作ります。
名前だけあればいいようです。
次にOAuthクライアントIDを作成してjsonファイルでダウンロードします。
以上です。
あとはIDEを使うなりjarにするなりで実行できます。
実行してみると・・
初回実行時には次のような認証画面が表示されます。
上記画面で許可をクリックするとメールが送信されます。
このとき合わせてローカルにアクセストークンとリフレッシュ
トークンの保存も行われます。
再実行時は上記トークンが使用されるため認証画面は出ません。
注意点など
OAuth認証で許可された操作について
本例では メール送信のスコープのみ をリクエストしています。
他の操作も行いたい場合は 適切なスコープ をリクエストする必要があります。
リフレッシュトークンの期限切れ
今回は軽く試すだけなので気にしていませんが、本番ではアカウント所有者による
いくつかの操作 によってトークンが期限切れになる点も考慮する必要があります。
以上です。