ジャバ・ザ・ハットリ
Published on

Deviseの認証メールをカスタマイズする方法

Authors
  • avatar
    ジャバ・ザ・ハットリ

Devise の認証メールをカスタマイズする方法がググっても日本語ではあまり出てこないので書いた。

Devise を confirmable にした場合、デフォルトだととても簡素なメールでの認証になってしまう。
ユーザーにとってはただの1回だけの認証メールで「リンクを押せば本登録なんだろ?」ってだけだけど。そういうなんでもないメールだからといって手を抜くといかにもこだわってない感がありありと出て私としては非常に気になる。ここはしっかりとデザインされたメールを送りたい。
で、ちゃんとした HTML メールを送る場合の方法。

まずは Devise Mailer をカスタマイズ。

png とか入れたい画像ファイルとかを入れる。よくあるのは Facebook とか Twitter アイコン。

# app/mailers/devise\_custom\_mailer.rb

class DeviseCustomMailer < Devise::Mailer
  before_filter :add_inline_attachment!

  private

  def add_inline_attachment!
    pngs = ['img-blog.png', 'img-facebook.png', 'img-in.png', 'img-pri.png',
            'img-twitter.png', 'img-vimeo.png', 'logo.png']

    pngs.each do |png|
      attachments.inline[png] = File.read("#{Rails.root}/app/assets/images/mailer/" + png)
    end
  end
end

config/initializers/devise.r  に  DeviseCustomMailer  を登録する。

# Configure the class responsible to send e-mails.
config.mailer = 'DeviseCustomMailer'

画像を使ったら /app/assets/images/mailer/ に入れておく。

後はメールを HTML 形式で書く。
/app/views/devise/mailer/confirmation_instructions.html.erb
イメージタグはこのように

<%= image_tag attachments['img-facebook.png'].url, :alt => "Facebook" %>