この記事は
- 技術メモです
やりたかったこと
- 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のマルチパートメールになって送信されます
終わりに
- ガラケーとかのテキストしか受けられないメーラ爆発しろ