Sinatraからgmailを使ってメールを送信する


この記事はLife is Tech ! Members Advent Calendar 2017の3日目の記事です。

今回の環境

  • Cloud9
  • Sinatra 1.4.7(?)

以上。

やりたいこと

  • 会員登録などの際に登録されたメールアドレスに確認メールを送信したい

実装!

以下のコードを追記する

Gemfile
gem 'ruby-gmail', '~> 0.3.1'
app.rb
require 'gmail'


def send_message(mail_address, mail_subject, mail_body)
  gmail = Gmail.new("<MailAddress>", "<Password>")

  message =
    gmail.generate_message do
      to mail_address
      subject mail_subject
      html_part do
        content_type "text/html; charset=UTF-8"
        body mail_body
      end
    end

  gmail.deliver(message)
  gmail.logout
end

使いたいところに以下のコードを挿入する
send_message(<EmailAddress>,<Subject>,<Body>)
※BodyはHTMLタグを使えます。


send_message("[email protected]","会員登録が成功しました","<p>会員登録ありがとうございます。</p>")

以下のコマンドを実行する

コマンド
$ bundle --without production

仕上げ

Googleは頭がいいので、怪しいアプリのアカウントへのログインを弾いてしまいます。これを回避するには、二段階認証を有効にし、アプリ固有のパスワードを設定する必要があります。

  • 使用するGmailのアカウントにログインしておく

  • google.comにアクセスし、右上のアカウント画像をクリック→「Googleアカウント」をクリック

  • 左側にある「セキュリティ」をクリック

  • ちょっと下に行き、「2段階認証プロセス」をクリック

  • パスワードを入力する

  • 携帯電話番号を入力する

  • 届いたコードを入力する

  • 「オンにする」をクリックする

  • 赤で囲まれたボタンを押す

  • 届いたコードを入力

  • 赤で囲まれたボタンを押す

  • アプリの名前を入力(適当でok)

  • アプリパスワードが生成されるので、「実装!」で実装したgmail = Gmail.new("<MailAddress>", "<Password>")のPasswordを変える

終わりに

意外と簡単だったww

明日も…まだ埋まってませんね。。。誰か入ってください!!!!