Ruby
Rails
ActionMailer

メモ:RailsのActionMailerでテキストメールを自動生成する


この記事は


  • 技術メモです


やりたかったこと


  • RailsのActionMailerを使ってメールを送信しているサービスがあります

  • そこですでにHTMLメールを送信しているのですが、一部メーラでHTMLメールは受信できないという話がありました

  • そこで全メールについてTEXTとのマルチパートメールで送出する必要がでてきました


普通にやると


  • 既存のHTMLメールのテンプレートに加えて、TEXTメールのビューテンプレートも作成するとマルチパートで送信することが可能です

  • しかし、TEXT/HTMLのビューテンプレートを両方メンテナンスしていくのは結構きついです


actionmailer-text gem



  • actionmailer-textを使うと、自動的にHTMLメールからタグを除去していい感じにテキストメールを送出してくれます

  • こんな感じっぽく動きます



    • <br/>は改行に置換

    • リンクはリンク文字列(URL)みたいな感じに置換

    • そのほかの普通のタグは除去


    • このへんを見るとなんか一生懸命正規表現で置換してるっぽい




使い方


  • gemを入れます


Gemfile

gem 'actionmailer-text'



  • application_mailerに所定のモジュールをincludeします


application_mailer.rb

class ApplicationMailer < ActionMailer::Base

# 追記
include ActionMailer::Text
end


  • ちなみにdeviseを使っている場合、deviseから送られるメールはApplicationMailerを継承していないことがあるので、devise設定ファイルで指定します


config/initializers/devise.rb

config.parent_mailer = 'ApplicationMailer'



  • 以上で普通に全てのメールがTEXTとHTMLのマルチパートメールになって送信されます


終わりに


  • ガラケーとかのテキストしか受けられないメーラ爆発しろ