ログイン機能でDeviseを導入している方は多いのではないでしょうか。
Deviseだと、下記のようにメール送信をするタイミングがあります。※カスタマイズ可能

■例
・新規登録時(認証用メール)
・パスワードリセット時
・ロックがかかった時
・招待する時
etc

本記事では、Gmailを設定して送信する流れを紹介します。

Gmail側の設定

2段階認証の設定

Gmailの画面の右上のロゴをクリックして、「Google アカウントを管理」をクリックします。

左メニューからセキュリティを選択して、2段階認証プロセスをクリックします。

そのまま進めます。

電話番号を入力して次へ進めます。

届いたメッセージに記載の数字を入力して次へ進めます。

有効にして進めます。

これで2段階認証の設定完了です。

アプリパスワード

続いて、アプリパスワードを設定します。

アプリを選択する項目で「その他」を選択します。

任意の名前(アプリ名等)を入力して生成します。

生成されたパスワードをメモしておきます。

Rails側の設定

※パスワードは環境変数(credentials.yml.enc)へ保存します。
まず、config > environments配下のファイルへ追記します。

Rails.application.configure do
 
 #~省略~
 
  config.action_mailer.default_url_options = { host: 'https://2e************************.vfs.cloud9.ap-northeast-1.amazonaws.com' } #cloud9を開発環境にしている場合のhost例
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
   address:              'smtp.gmail.com',
   port:                  587,
   domain:               'gmail.com',
   user_name:            '****@****.com', #先ほど設定したgmailアドレス
   password:             Rails.application.credentials.mailer[:password] ,  #2段階認証したアカウントで発行したアプリパスワード
   authentication:       'plain',
   enable_starttls_auto:  true
  }

  #~省略~

end

本番環境も必要に応じて追記しましょう。

Rails.application.configure do
 
 #~省略~
  
  config.action_mailer.default_url_options = { host: 'https://****.com' } #本番環境で使用するドメインを記入
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
   address:              'smtp.gmail.com',
   port:                  587,
   domain:               'gmail.com',
   user_name:            '****@****.com', #先ほど設定したgmailアドレス
   password:             Rails.application.credentials.mailer[:password] ,  #2段階認証したアカウントで発行したアプリパスワード
   authentication:       'plain',
   enable_starttls_auto:  true
  }

  #~省略~

end

続いて、環境変数(credentials.yml.enc)を編集します。

ターミナル

EDITOR="vi" bin/rails credentials:edit

エディタが開きます、操作方法はこちらです。

編集開始i
編集終了Esc ボタン
上書き保存:wp
保存せずに終了:q

下記のように追記して保存して終了します。

#~省略~

mailer:
  password: im********py

#~省略~

これで設定完了です。

サーバーを再起動後、新規登録時の確認メールが送信されるかチェックしてみましょう。
無事成功すれば、下記図のように送信一覧に表示されます。

参考にしていただければ幸いです。