Rails / HTMLメールの作成を簡単にしたい

Shunsuke Sawada

RailsでHTMLメールの作成、どうしてますか?
基本的にCSSが使えないので、テーブルでレイアウトしてインラインCSSを使うのですが、普通に作ると結構苦痛。メンテナンスもしづらいし、似たようなデザインで別のメールをつくる時もテンプレート間でスタイルが共有できないので、ああ… となります。

なので便利なGemを使う。
Mange/roadie-rails

Gemfile

1
gem 'roadie-rails', '~> 1.0'

  
config/initializers/assets.rb

ruby
1
Rails.application.config.assets.precompile += %w( mailer.css )

  
mailers/my_mailer.rb

ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyMailer < ActionMailer::Base

  include Roadie::Rails::Automatic
  add_template_helper(ApplicationHelper)

  default from: 'myapp.com <[email protected]>'
  layout 'mailer'

  def notification(message, user)
    @message = message
    @user = user
    mail to: @user, subject: "メッセージを受け取りました",
         template_path: "mailers/my_mailer", template_name: "notification"
  end
end

  
views/layouts/mailer.html.haml

haml
1
2
3
# スタイルシートが読み込めるよ!
= stylesheet_link_tag 'mailer', media: 'all'
= yield

  
views/mailers/my_mailer.rb

haml
1
2
3
4
5
6
7
8
9
.mail-container
  .mail-header
    HTMLメールの作成
  .mail-body
    %h3.mail-body-title
      こんな感じでCSSが使えるよ!

.mail-footer
  便利だね

  

おまけ

最近、HerokuのアドオンのMandrillが有料になってしまったので、無料プランのある Sparkpost を使い始めました。なので、その設定を。

/config/environments/production.rb

ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Rails.application.configure do
  # SparkPost
  config.action_mailer.default_url_options = { :host => 'myapp.com' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    user_name: 'SMTP_Injection',
    password: ENV['SPARKPOST_SMTP_PASSWORD'],
    address: 'smtp.sparkpostmail.com',
    port: 587,
    enable_starttls_auto: true,
    format: :html,
    from: '[email protected]' #送信元
  }
end

ENV['SPARKPOST_SMTP_PASSWORD']heroku addons:create sparkpost:free したら自動でHerokuの環境変数に入ってます。
heroku config で確認できます。

あとは Sparkpost のダッシュボードにいって SPF Text RecordDKIM Record の値を取得して使っているDNSに設定するだけ。Amazon Route53とかだとこんな感じ。

Screen Shot 2015-11-05 at 9.39.30 AM

以上です。
快適!

  

参考

SparkPost | Heroku Dev Center
Integrate SparkPost in your Rails app | The HungryCoder

16
Shunsuke Sawada

おすすめの記事

HTMLメール作成方法 2013年度版
16