Action Mailer

メイラーの作成

メイラーは概念上コントローラと似通っており、メイラーを生成すると (コントローラと同様に) ビューのディレクトリとテストも同時に生成される。

% rails g mailer UserMailer account_activation

UserメイラーとApplicationメイラーの編集

mailに渡すキーはtoが宛先、subjectが件名

class UserMailer < ApplicationMailer

  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end

end
class ApplicationMailer < ActionMailer::Base
  default from: "noreply@example.com"
  layout 'mailer'
end

メール文面のテキストビューとHTMLビューを編集

app/views/user_mailer/account_activation.text.erb

Hi <%= @user.name %>,

Welcome to the Sample App! Click on the link below to activate your account:

<%= edit_account_activation_url(@user.activation_token, email: @user.email) %>

app/views/user_mailer/account_activation.html.erb

<h1>Sample App</h1>

<p>Hi <%= @user.name %>,</p>

<p>
Welcome to the Sample App! Click on the link below to activate your account:
</p>

<%= link_to "Activate", edit_account_activation_url(@user.activation_token,
                                                    email: @user.email) %>

コントローラにメール送信処理を記述

deliver_now:メールをすぐ送る

class UserController < ApplicationController

  def create
      ...
      UserMailer.account_activation(@user).deliver_now
  end