ログイン機能で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
#~省略~
これで設定完了です。
サーバーを再起動後、新規登録時の確認メールが送信されるかチェックしてみましょう。
無事成功すれば、下記図のように送信一覧に表示されます。
参考にしていただければ幸いです。