LoginSignup
5
5

More than 3 years have passed since last update.

【Rails】deviseで実装したパスワードリセット機能を使って本番環境でメール送信してみた

Posted at

環境

macOS: Big Sur Ver11.2.1
Rails: 6.1.1
Ruby: 2.6.5
本番環境: Heroku

記事の目的

Herokuにデプロイしたアプリケーションでパスワードリセットが正しく動作すること。
パスワードリセット機能はdeviseで導入済み、開発環境で動作確認済みです。
詳しくは、こちらの記事をどうぞ!

実装

今回はアプリケーションがHerokuにデプロイされているからHerokuのアドオンであるMailgunを利用して本番環境でのメール送信を試みます。

手順①:アプリの環境設定

Mailgunの公式ドキュメントを参考に、以下のようにファイルを編集。
どちらかというとRailsチュートリアルの11章を参考にしたほうがわかりやすい。

config/environmemts/production.rb
Rails.application.configure do

(中略)

  config.action_mailer.raise_delivery_errors = true

  config.action_mailer.delivery_method = :smtp
  host = 'https://furima-34501.herokuapp.com/'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :port           => ENV['MAILGUN_SMTP_PORT'],
    :address        => ENV['MAILGUN_SMTP_SERVER'],
    :user_name      => ENV['MAILGUN_SMTP_LOGIN'],
    :password       => ENV['MAILGUN_SMTP_PASSWORD'],
    :domain         => host,
    :authentication => :plain,
  }

(略)

ここで環境変数をいきなり使っていますが、この後にherokuコマンドを打つと自動的にHerokuの本番環境でも環境変数が設定されるようです。なので、あらかじめ先に決められた環境変数名で記述しているだけ。

手順②:Herokuのアドオンを追加

まずはアプリケーションをHerokuにデプロイしましょう。

% git push heroku master
% heroku run rails db:migrate

デプロイできたら以下のコマンドを実行。

% heroku addons:create mailgun:starter

最後のstarterとは、アドオンのプラン名です。今回は無料プランにしています。

ここで、さっきconfig/environmemts/production.rbに記載した環境変数が設定された確認できます。

% heroku config:get MAILGUN_SMTP_LOGIN
% heroku config:get MAILGUN_SMTP_PASSWORD

実行すると、ちゃんと環境変数が結果に返ってくるはず!

手順③:受信メールの認証

無料プランを利用している場合は、承認された受信者にのみ送信するように制限がかかっているため、本番環境でメールを送るアドレスを認証する作業が必要となる。
以下のコマンドを実行。

% heroku addons:open mailgun

すると、MailgunダッシュボードのURLが表示され、勝手にブラウザが起動します。

MailGun公式ドキュメントに従い、受信するメールアドレスを認証します。画面左側の「Sending」→「Domains」のリストにある「sandbox」で始まるサンドボックスドメインを選択します。
画面右側の「Authorized Recipients」にメールを送信するアドレス(とりあえず自分の個人アドレスとか)を入力し、認証します。

最後に

今回は無料プランかつHerokuにデプロイしたアプリケーションでの実装でした。
Railsチュートリアル様、ありがとうございました!

5
5
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
5
5