骨のダイスを転がそう

2009|01|02|03|04|05|06|07|10|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|02|03|05|06|07|08|09|10|11|12|
2012|01|02|04|05|09|10|11|12|
2013|01|02|04|
2014|11|
2015|01|04|05|
2016|06|07|08|09|11|
2017|01|02|03|04|
2018|03|

2013-02-20

_ [Ruby] ruby 1.8.5 で TMail を使わず日本語メール

今どき、こんな環境でピュアRuby でメール送信する必要があったんじゃ……。

 require "mail"
 require "iconv"

 module Mail
   class SubjectField < UnstructuredField

     def initialize(value = nil, charset = 'ISO-2022-JP')
       self.charset = 'ISO-2022-JP'
       super(CAPITALIZED_FIELD, strip_field(FIELD_NAME, value), self.charset)
       self.value = value
     end

     def encoded
       "Subject: " + NKF.nkf("-JM", NKF.nkf("-jW", self.value) ) + "\n"
     end

     def decoded
       self.value
     end
   end
 end

 mail = Mail.new("Content-Type: text/plain; charset=ISO-2022-JP")

 mail.from    "hoge@fuga.jp"
 mail.to      "foo@bar.com"

 subject = "こんにちは、これはテストです。"
 mail.subject subject
 body =<<-"EOL"
 こんにちは
 お元気ですか
 ではさようなら
 EOL

 mail.body    Iconv.iconv("iso-2022-jp", "utf-8", body).join("")

 mail.delivery_method :smtp, { :address => "localhost",
                               :port    => "25" }
 mail.deliver!