ActiveMailer の subject 文字化け
Railsメールは ActiveHeart で日本語化するのが定番で、そのように実装してきたのですが、メールsubject は MIMEエンコードが必要。
メールにかけられた呪文「MIME〜前編」
http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
ActiveHeartだけではこの MIME対応が無いので、そのままではsubjectは文字化けしてしまいます。
西さん(舞波乙)の「Ruby on Rails入門」では、このMIME対応 BASE64メソッドも紹介されているので、はまった人は是非買いましょう。(はまらなくても絶対おすすめですけど)
で買ったのでこれでOKOKと思ってやってみたものの、どうもまだ文字化け。
Rails Chat
http://andworkspace.net/
に助けを求めたところ xibbarさまより 次の技を伝授頂きまして、文字化け解消! 多謝!!
subject "=?ISO-2022-JP?B?"+[NKF.nkf("-jW","ほげ")].pack("m").delete("\r\n")+"?="
ruby 1.8.2 以降はNKF2.0.5相当で nkfの引数説明はここ↓
Rubyリファレンスマニュアル - nkf
http://www.ruby-lang.org/ja/man/?cmd=view;name=nkf
一部抜粋します。
: j,s,e,w Outout code is JIS 7 bit (DEFAULT), Shift JIS, AT&T JIS (EUC), UTF-8 After 'w' you can add more options. (80?|16((B|L)0?)?) J,S,E,W Input assumption is JIS 7 bit , Shift JIS, AT&T JIS (EUC), UTF-8 After 'W' you can add more options. (8|16(B|L)?) t no conversion i_/o_ Output sequence to designate JIS-kanji/ASCII (DEFAULT B) r {de/en}crypt ROT13/47 h 1 katakana->hiragana, 2 hiragana->katakana, 3 both m[BQN0] MIME decode [B:base64,Q:quoted,N:non-strict,0:no decode] M[BQ] MIME encode [B:base64 Q:quoted] :