Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

ActionMailer

ActionMailer は青木さんの TMail のラッパーとして作られています。 なので、TMail を理解することが ActionMailer を理解することの近道になるでしょう。

TMail

しかし ActionMailer-1.8.0 以降、徐々に改悪されているような…--moriq

ActionMailer の default charset はUTF-8です。 @@default_charset や @charset を設定すると変更できます。 test では CHARSET で設定します。

@@encode_subject = true にすると Subject に quoted_printable が適用されます。今のところ (0.7.1) BASE64 はサポートされていません。ただし、TMail 側では $KCODE を見て iso-2022-jp BASE64 encode を行います。

iso-2022-jp BASE64

iso-2022-jp BASE64 でメールを作成するには次のようにすればよいでしょう。

 module ActionMailer #:nodoc:
   class Base
     require 'nkf'
     class << self
       def base64(text, charset="iso-2022-jp", convert=true)
         if convert
           if charset == "iso-2022-jp"
             text = NKF.nkf('-j -m0', text)
           end
         end
         text = [text].pack('m').delete("\r\n")
         "=?#{charset}?B?#{text}?="
       end
     end
   end
 end

 class Notifications < ActionMailer::Base
   @@default_charset = "iso-2022-jp"
   @@encode_subject = false
   #...
 end

test は次のようになります。

 class NotificationsTest < Test::Unit::TestCase
   CHARSET = "iso-2022-jp"
   #...
   private
     def encode(subject)
       ActionMailer::Base.base64(subject, CHARSET)
     end
 end

1.8.0 以降の変更点

  • tmail/quoting.rb:
    • TMail::Mail#body は body(to_charset='utf-8') と再定義され、header の charset から to_charset への convert を Iconv を用いて行います。元の body は quoted_body に alias されています。
      • しかし、これは Base64, Quoted Printable のどちらも行わない場合に対応できていないように思う。--moriq
    • TMail::Mail#subject も body と同様。
  • Receiving emails - 受信メールの解析に ActionMailer::Base が使えるようになりました。ActionMailer の README 参照。

Action Mailer - Easy email delivery and testing

Dependencies

Bundled software

Download

Installation

License

Support

ActionMailer::Base

Configuration options

Last modified:2007/02/06 20:49:54
Keyword(s):
References:[FrontPage]