LoginSignup
0
0

More than 3 years have passed since last update.

Railsでgoogleapisを使い、gmailでメール送信

Last updated at Posted at 2020-05-14

事前準備

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)
0
0
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
0
0