- Published on
Deviseの認証メールをカスタマイズする方法
- Authors
- ジャバ・ザ・ハットリ
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" %>