始めに
Rails認定資格を受験するにあたって、今回はActionMailerの項目をRailsチュートリアルを中心に自分なりにまとめて行きたいと思います。
ActionMailerとは
ActionMailerはRails上でメールの送信機能を実装するのに役立ちます。メール送信の機能を実装するためにメイラーとビューを作成していきます。
rails g mailer UserMailer
上記のコマンドでメイラー、ビューファイルを作成します。メイラーはUserMailerとApplicationMailerが作成されApplicationMailerはActionMailer::Baseを継承して作成されます。そしてUserMailerはそのApplicationMailerを継承しています。よって以下のような関係になります。
UserMailer(自分で作成したメイラー名) < ApplicationMailer < ActionMailer::Base
UserMailerファイルではActionMailerのメソッドであるdefaultやmailを使って、
class UserMailer < ApllicationMailer
default: from: 'sample@example.com'
# 実装したいメールの機能をメソッドとして実装する
# メール認証によるアカウントの有効化
def account_activation(user)
@user = user
mail to: user.email
end
# パスワードの初期化
def password_reset
mail to: "user@example.com"
end
end
メールの文章の設定はメイラービューで設定します。上記の「メール認証によるアカウントの有効化」「パスワードの初期化」の文章はそれぞれ、app/views/user_mailerの下にaccount_activation.text.erb、password_reset.text.erbといった名前で文章を設定することが出来ます。こちらのファイルの中に送信したい文章を入力すれば、それぞれのメールが送られるときに処理の内容に沿った文章のメールを送ることが出来ます。
このようにActionMailerの挙動はメイラーをコントローラーと考えると、メイラーはコントローラーによく似ていてメイラーに処理を書いて、メイラー内で定義されたインスタンス変数はメイラービュー内でも使用することが出来ます。