#author("2017-02-18T11:47:59+09:00","default:wikiwriter","wikiwriter") &tag(ActiveMailer); *目次 [#oa98f0b6] #contents *関連ページ [#of9fdef1] *参考情報 [#t743b261] -[[Action Mailer の基礎 | Rails ガイド:https://railsguides.jp/action_mailer_basics.html]] *基本 [#yd6dc1fe] **メイラークラスの作成 [#g5aa045e] -ActiveMailer::Baseを継承したメイラークラスがメール送信機能を担う -「bin/rails generate mailer UserMailer」で以下のクラスが作成される。 #pre{{ # app/mailers/application_mailer.rb class ApplicationMailer < ActionMailer::Base default from: "from@example.com" layout 'mailer' end # app/mailers/user_mailer.rb class UserMailer < ApplicationMailer end }} -ジェネレータを使用せずに直接ActionMailer::Baseを継承しても良い。 #pre{{ class MyMailer < ActionMailer::Base end }} **メールの作成 [#b1ba966c] -メーラークラスのインスタンスメソッドがメール送信、それに対応する.html.erbファイルがメール文に対応する。 #pre{{ class UserMailer < ApplicationMailer default from: 'notifications@example.com' def welcome_email(user) @user = user @url = 'http://example.com/login' mail(to: @user.email, subject: 'Welcome to My Awesome Site') end end }} -ビュー #pre{{ <!DOCTYPE html> <html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> </head> <body> <h1><%= @user.name %>様、example.comへようこそ。</h1> <p> example.comへのサインアップが成功しました。 your username is: <%= @user.login %>.<br> </p> <p> このサイトにログインするには、<%= @url %>をクリックしてください。 </p> <p>ご入会ありがとうございます。どうぞお楽しみくださいませ。</p> </body> </html> }} -呼び出しは普通にコントローラーから #pre{{ class UsersController < ApplicationController # POST /users # POST /users.json def create @user = User.new(params[:user]) respond_to do |format| if @user.save # 保存後にUserMailerを使用してwelcomeメールを送信 UserMailer.welcome_email(@user).deliver_later format.html { redirect_to(@user, notice: 'ユーザーが正常に作成されました。') } format.json { render json: @user, status: :created, location: @user } else format.html { render action: 'new' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end end }} -welcome_emailメソッドはmailメソッドを呼び出し、そこでMailオブジェクトが帰ってきている。そこからfrom/toなどにアクセス可能。