"NONE" やら "UTF8" では、C-T: の name に生JISが入ってるようなときに、 うまくパラメータをとってこれないなぁ。
$ cat mail.txt
Content-Type: application/octet-stream; name="本"
$ nkf -g mail.txt
ISO-2022-JP
$ cat ct.rb
require "tmail"
mail = TMail::Mail.parse(ARGF.read)
ct = mail.header["content-type"]
p ct.params
ct.instance_eval do
# FIXME: irresponsible regexp
if m = %r!(.+)/(.+); name="(.+)"!in.match(@body)
@main = m[1].downcase
@sub = m[2].downcase
(@params ||= {})["name"] = to_kcode(m[3])
end
end
p ct.params
$ ruby -Kn ct.rb mail.txt | nkf -w
{"name"=>"\e$BK\e(B"}
{"name"=>"\e$BK\\\e(B"}
$ ruby -Ku ct.rb mail.txt | nkf -w
{"name"=>""}
{"name"=>"本"}
$ ruby -Ke ct.rb mail.txt | nkf -w
{"name"=>"本"}
{"name"=>"本"}
$ ruby -Ks ct.rb mail.txt | nkf -w
{"name"=>"本"}
{"name"=>"本"}
バックスラッシュが消えちゃう模様。 "UTF8" で使うのは、何かと問題が多いのかなぁ。