Iso2022Mailer

ActiveHeartのIso2022Mailerっててきとーではないでしょうか。SubjectとかFromとか無視だし…。まあFromに関しては、単一のフィルタで処理するのは面倒な気もするけれど。

後で調べてみたところ、Ruby-GetTextとかいうのが良いらしいですが、今回の仕事は次のようなアドホックなコードで対処。

class RemainderMailer < Iso2022jpMailer
  def sent(user, sent_at = Time.now)
    @user = user
    @subject    = encode('サブジェクト')
    @body       = {'user' => user}
    @recipients = user.email
    @from       = encode('名無しさん') + '<foo@bar.co.jp>'
    @sent_on    = sent_at
    @headers    = {}
  end
  
  def encode( str )
    require "base64"
    ("=?ISO-2022-JP?B?" + Base64.encode64( NKF.nkf( "-j -m0", str ) ).chomp + "?=").gsub(/\s/, "")
  end
end