はじめに
mailcatcherは、開発環境でのメール送信をキャプチャするためのツールです。ローカルで送信されたメールをブラウザ上で簡単に確認できるようにします。mailcatcherをRailsアプリケーションで使用する方法について説明します。
mailcatcherの使用方法
Gemfileにmailcatcherを追加
まず、RailsアプリケーションのGemfile
に以下を追記しbundle install
を行います。
Gemfile
group :development do
gem 'mailcatcher'
end
Railsアプリケーションのメール設定
mailcatcherを使用するために、Railsのメール設定を変更します。
config/environments/development.rb
Rails.application.configure do
# 他の設定
# MailCatcherの設定
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: '127.0.0.1',
port: 1025
}
# メールの送信元アドレスの設定(必要に応じて変更)
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
end
config.action_mailer.delivery_method
を:smtp
に設定し、config.action_mailer.smtp_settings
でmailcatcherのSMTPサーバーを指定します。address: '127.0.0.1'
とport: 1025
は、mailcatcherのデフォルトの設定です。
mailcatcherの起動
次に、ターミナルで以下のコマンドを使用してmailcatcherを起動します。
% mailcatcher
Starting MailCatcher
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
smtp://127.0.0.1:1025
はSMTPサーバーのアドレスとポートです。http://127.0.0.1:1080
はmailcatcherのウェブインターフェースのアドレスです。
メールの送信と確認
mailcatcherが起動している状態で、Railsアプリケーションからメールを送信すると、mailcatcherのウェブインターフェースで受信したメールを確認できます。
例として、ユーザー登録時にウェルカムメールを送信するUserMailer
クラスを作成します。
% rails generate mailer UserMailer
app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer
default from: 'no-reply@example.com'
def welcome_email(user)
@user = user
@url = 'http://localhost:3000/login'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end
コントローラーでメール送信
例として、UsersController
でユーザーを作成した後にウェルカムメールを送信します。
app/controllers/users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
if @user.save
UserMailer.welcome_email(@user).deliver_now
redirect_to @user, notice: 'User was successfully created.'
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
end
まとめ
これで、開発環境でメールの送信と受信を簡単にキャプチャして確認する準備が整いました。mailcatcherを使用することで、開発中に送信されるメールを実際に送信せずにテストすることができます。