From: "川田誠司" Date: 2003-08-25T18:44:58+09:00 Subject: [ruby-list:38231] Re: Tmailで送るメールに日付がつけられなくなりました 川田と申します。 |青木です。 いやあ、ありがとうございます。感激です。 |> def make_mail_text(subject,from,to,txt,attach) |> mail = TMail::Mail.new |> mail.from = TMail::HeaderField.new('From', from) |> mail.to = to |> mail.date = Time.now |> mail.subject =subject |> mail.mime_version = '1.0' |> 以下略 |> で、mail.dateに日付が正しく入っていないのかと思い、 |> mail.date = "Sat, 23 Aug 2003 18:43:41 +0900" |> などと直接代入もやって見ましたが、結果は同じでした。 |> |> まったく同じ書き方でも、旧のmail sererでは問題がありませんでした。 |> 旧のメールサーバが日付を補足していたのかもしれません。 | |つまり、セットしたつもりでも実は Date: がついてなかった、 |ということでないと話が通じないわけですよね。 そういう事になると思います。 | |まず、手元で make_mail_text だけを実行して Date: が付くか |どうか確認してください。少なくとも手元の環境では以下の |プログラムでちゃんと Date: が付きます。 | | require 'tmail' | m = TMail::Mail.new | m.date = Time.now | puts m.encoded これは実行してみましたが、 ./tmail.rb:3:in `require': No such file to load -- tmail/mailbox (LoadError) from ./tmail.rb:3 from mtest.rb:1:in `require' from mtest.rb:1 でtmail/mailboxがないのでだめでした。 バイナリーでダウンロードしてみたTmailVer0.10.7にはあるんですが、0.10.2にはついていなかったんでしょうか。 現状0.10.7にはしていません。0.10.7は試してみましたが、エラーでした。 logは最後につけます。 | |……あ、そうか、わかった。 | |> def make_mail_text(subject,from,to,txt,attach) |> mail = TMail::Mail.new |> mail.from = TMail::HeaderField.new('From', from) | |ここが原因ですね。from が文字列としたら、 | | mail.from = from | |としてください。ここで違う型の値 (HeaderField) をセット |しているために、どこかで例外が起きているんだと思います。 |ruby -d で実行すると例外発生をトレースできるので確かめて |みてください。 そこで、 mail.from = from に直した上で、今度は-dオプションで同スクリプトを実行しました。 すると |Exception `LoadError' at ./tmail/base64.rb:30 - No such file to load -- tmail/tmbase64 |Exception `LoadError' at ./tmail/scanner.rb:16 - No such file to load -- tmail/cmails |Exception `TMail::SyntaxError' at mp.y:342 - parse error on token $end エラーが出てました。 -dというオプションを知らなかったんで気が付きませんでした。 SyntaxErrorは mail.date = "Sat, 23 Aug 2003 18:43:41 +0900" でも mail.date = Time.nowでも 同じでした。 上のLoadErrorが関係しているのかもしれませんが、 tmail/tmbase64 と tmail/cmails はTmail/には見当たりません。(だからエラーになったんですが) RubyHackingGuidを読んでは分からず、挫折して自己嫌悪を繰り返す私には、 拡張子がyのmp.y:342 - parse error on token $end はちょっと歯が立ちません というのはさておいて どうぞよろしくお願いします。 0.10.7でのエラーログ: 上の4行スクリプト 0.10.7をwin用のバイナリー版で試したら、 Exception `NameError' at ./tmail/base64.rb:31 - undefined method `c_folding_encode' for module `TMail::Base64' Exception `NameError' at /home/aamine/lib/ruby/racc/parser.rb:24 - uninitialized constant Object::ParseError Exception `NameError' at /home/aamine/lib/ruby/racc/parser.rb:45 - uninitialized constant Racc_Runtime_Core_Id_C at Racc::Parser Exception `NameError' at ./tmail/parser.rb:15 - uninitialized constant Racc_Runtime_Core_Id_C at Racc::Parser /home/aamine/lib/ruby/racc/parser.rb:45:in `module_eval': uninitialized constant Racc_Runtime_Core_Id_C at Racc::Parser (NameError) from ./tmail/parser.rb:15:in `module_eval' from ./tmail/parser.rb:15 from ./tmail/address.rb:12:in `require' from ./tmail/address.rb:12 from ./tmail/header.rb:12:in `require' from ./tmail/header.rb:12 from ./tmail/mail.rb:13:in `require' from ./tmail/mail.rb:13 from ./tmail.rb:2:in `require' from ./tmail.rb:2 from aoki2.rb:1:in `require' from aoki2.rb:1 となってしまったのですが、0.10.2を残したままなので、2Ver混在の問題が起きている可能性はあります。 ちょっと長くなってすみません。 よろしくお願いします。