デフォルトはUTF-8のようです。UTF-8でもきちんと受信できるメーラーも多いですが、一番普及しているであろうMSOEが文字化けてしまうようなので、iso-2022-jpで送信する手法。もうUTF-8に統一しようよ。。。
今回はActionMaierとGetTextを利用。バージョンは以下。
Ruby 1.8.5
Rails 2.2.2
ActionMailer 2.2.2
GetText 1.93.0
まずはGetTextをインストール。これはgemで一発。
gem install gettext
メール送信するモデルは以下。ポイントはクラスの前にGetTextのインクルードと日本語であるという宣言。クラスの中で文字コードの宣言。これだけだとsubjectが残念な結果になったので、subjectは別途base64でエンコード。
require ‘gettext/rails’
GetText.locale = ‘ja’class Hoge < ActionMailer::Base
@@charset = ‘iso-2022-jp’def sendmail
subject base64(‘ほげほげメール’)
recipient 送り先
from 送信者
send_on 送信日時end
end
本文はerbファイルのテンプレート読み込みです。こっちに日本語が書かれています。送信はActionMailerでの通常の送り方のまま。これでGmail、Beckey!、MSOEでの受信には問題ありませんでした。
以前否定したRailsですが、最近多くの時間を割いています。理由は近いうちに説明、言い訳をしたいと思います。