letter opener webでRailsのメール送信を確認する

前回の記事でRailsにdeviseでメール認証を使ったパスワード再設定を実装しました。 RailsのAction Mailerを使って送信したメールの内容をletter_opener_webというgemで確認できるようなので使い方を調べました。

結論

下記手順でletter_opener_web gemを導入し、設定を追加すればメール送信の内容を確認できる。

  1. インストール
  2. ルーティング追加
  3. Action Mailerのdelivery_method の設定
  4. 送信メールの内容を確認

letter_opener_webとは?

Railsの送信済みメールをweb上で閲覧できるgem。

fgrehm/letter_opener_web: A web interface for browsing Ruby on Rails sent emails

導入すると次のメリットがあります。

  • 自前でメールアドレスを用意しなくて良い。
  • ブラウザ上でメール送信の内容確認ができるので楽。
  • Action Mailerの設定が少ないので楽。

1. インストール

今回は下記のRailsアプリに実際にletter_opener_web gem導入します。

karlley/fjord-books_app at my-user_page

Gemfile に追記後、bundle install でインストールします。

# Gemfile

group :development do
  ...
  # 下記を追加
  gem 'letter_opener_web'
  ...
end

注意点としてローカル環境でのみ当gemを使用するのでdevelopment 環境にのみインストールします。

2. ルーティング追加

config/routes.rb にletter opener web用のルーティングを追加します。

# config/routes.rb

Rails.application.routes.draw do
  # 下記を追加
  mount LetterOpenerWeb::Engine, at: '/letter_opener' if Rails.env.development?
  # 既存のルーティング
  root 'books#index'
  devise_for :users, controllers: { registrations: 'users/registrations' }
  resources :users, only: %i[index show]
  resources :books
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

3. Action Mailerのdelivery_method の設定

config/environments/development.rb にActionMailerのdelivery_method の設定を追加します。

Action Mailer の基礎 - Railsガイド

# config/environments/development.rb

require 'active_support/core_ext/integer/time'

Rails.application.configure do
  ...
  # Default url for mailer
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

  # 下記を追加
  config.action_mailer.delivery_method = :letter_opener_web
end

letter_opener_web gemの設定は以上で完了です。

4. 送信メールの内容を確認

rails s でサーバを起動しhttp://localhost:3000/letter_opener/ にアクセスし、下記のようなページが表示されればgemの設定はokです。

devise gemでのパスワード再設定をメール認証で行う際のメールは以下のように確認できました。

まとめ

自前で用意したメールアドレスを使った動作確認よりも全然簡単だったので最初からこちらの方法を選択すれば良かったとちょっと後悔しました😅 こちらのgemは現場でも良く使われるようなのでしっかり使い方を覚えておこうと思います。

参照

fgrehm/letter_opener_web: A web interface for browsing Ruby on Rails sent emails

Action Mailer の基礎 - Railsガイド

【Rails】letter_opener_webを用いて開発環境で送信したメールを確認する方法|TechTechMedia