Tag: ActiveMailer

目次

関連ページ

参考情報

基本

メイラークラスの作成

  • ActiveMailer::Baseを継承したメイラークラスがメール送信機能を担う
  • 「bin/rails generate mailer UserMailer」で以下のクラスが作成される。
    # 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を継承しても良い。
    class MyMailer < ActionMailer::Base
    end
    

メールの作成

  • メーラークラスのインスタンスメソッドがメール送信、それに対応する.html.erbファイルがメール文に対応する。
    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
    
  • ビュー
    <!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>
    
  • 呼び出しは普通にコントローラーから
    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などにアクセス可能。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-18 (土) 11:48:00