文字化けしないメールの送り方

UTF8の一部の文字(〜とか)を含むメールも文字化けしないで送る方法の紹介
gettextを利用して一部に修正を加えています。
NKFのオプションに --cp932 を加えているだけなので、
gettext にパッチを当てるのが一番正しい気もしますが、一応これでいけます。

require 'gettext/rails'
GetText.locale = 'ja'

class HogeMailer < ActionMailer::Base
  @@charset='iso-2022-jp'

  def base64(text, charset="iso-2022-jp", convert=true)
    if convert
      if charset == "iso-2022-jp"
        text = NKF.nkf('-j --cp932 -m0', text)
      end
    end
    text = TMail::Base64.folding_encode(text)
    "=?#{charset}?B?#{text}?="
  end
  
  def create!(*arg) #:nodoc:
    create_without_gettext!(*arg)
    if Locale.get.language == "ja"
      require 'nkf'
      @mail.subject = base64(@mail.subject)
      part = @mail.parts.empty? ? @mail : @mail.parts.first
      if part.content_type == 'text/plain'
        part.charset = 'iso-2022-jp'
        part.body = NKF.nkf('-j --cp932', part.body)
      end
    end
    @mail
  end
end