[ruby-list:37678] [TMail] Fromのパースについて

From: Ken-ichi HASHIMOTO <ken@...>
Date: 2003-05-15 09:43:33 UTC
List: ruby-list #37678
橋本です。

 便利なRubyを使わせて頂いております。

 TMailのFromのパース&エンコードについて質問&BUG報告します。
   TMail は 0.10.6 
   Ruby  は 1.6.8 (mswin32 and linux)
 を使用しています。

-------コード
require 'tmail'
#(1)
buf = 'From: hoge@example.jp (hoge)'
mail = TMail::Mail.parse( buf )
mail.encoded  # => OK

#(2)
buf = 'From: hoge@example.jp (テスト)'
mail = TMail::Mail.parse( buf )
mail.encoded  # => NG
------ここまで

 1.致命的なエラー
     (2)のコードのように処理をすると、次のトレースを吐き出します。
     なお、(1)のコードは、トレースを吐き出しません。

 2.仕様なのかBUGなのか分からない動作
     ()を含むアドレスをパースした時、TMail::Address.name の値がnil

     buf = 'From: (namae desu) hoge@example.jp'
     mail = TMail::Mail.parse( buf )
     mail.from_addrs[0].name #=> nil   # namae desu が出てくる?

     RFC2822 で 「(namae desu) hoge@example.jp」 ような表記は廃止されています。
     その為正しく処理しない仕様なのでしょうか?


  ソースを追いかけだしたのですが、ちょっとよく分からないので、安直に
  聞いてしまいます。

  何か情報がありましたらお願いします。

--- 1. のフレームです。
D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:337:in `concat_e': TMail FATAL: exist: "(" (RuntimeError)
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:309:in `do_encode'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:279:in `scanadd'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:209:in `text'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/header.rb:280:in `do_accept'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/header.rb:277:in `each'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/header.rb:277:in `do_accept'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/header.rb:118:in `accept'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/mail.rb:81:in `accept'
 ... 7 levels...
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/mail.rb:77:in `accept'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:48:in `accept_strategy'
from D:/ruby/lib/ruby/site_ruby/1.6/tmail/encode.rb:36:in `encoded'


---
橋本 賢一 Ken-ichi HASHIMOTO
 E-Mail ken@po.ganseki.ne.jp

In This Thread

Prev Next