ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

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

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" %>