事前準備
https://developers.google.com/gmail/api/quickstart/ruby
とりあえずこの通りにして、ラベルが表示されるまでやってみる
スコープの変更
サンプルコードだとreadonlyだけなので、メール送信出来るようにスコープを変える
SCOPE = Google::Apis::GmailV1::AUTH_GMAIL_READONLY
SCOPE = [
Google::Apis::GmailV1::AUTH_GMAIL_READONLY,
Google::Apis::GmailV1::AUTH_GMAIL_SEND
]
* ただメールを送るだけならAUTH_GMAIL_READONLY
は要らないが、後に説明するプロファイルの参照時に必要
既に出来上がっているtoken.ymlはスコープが最初のままなので、このファイルを消す
メールの作成
メールは素のテキストで書くか、何らかのライブラリを使って組み立てるかする。
APIとしてはBase64でエンコードしたものを渡す必要があるが、google/apis/gmail_v1
で勝手にやってくれるので、素のテキストのままで渡せば問題ない。
# Railsに標準で入っている[mail gem][5]
mail = Mail.new do
from "from@domain.local" # credentialsを取ったgmailのアカウントから送るなら、多分必要ない get_user_profile("me") で確定するっぽい
to "to@domain.local"
subject "test"
body "body"
end
message_object = Google::Apis::GmailV1::Message.new
message_object.raw = mail.to_s
GoogleApi.gmail_service.send_user_message("me", message_object)
自分のメールアドレスを動的に取る
fromアドレスをハードコードしたくない場合
response = GoogleApi.gmail_service.get_user_profile("me")
data = { "from" => response.email_address }
Rails.root.join("tmp/gmail_profile.yml").write YAML.dump(data)