新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2009-04-14

[perl]MIME::LiteのRFC対応に難あり

ステキモジュールなMIME::Liteにおいて、RFC2822の4.5.3.1([Page 53]あたり)に準拠しきれていないと思われる現象に出くわした。

まず、このガサツなテストコードを見てほしい。
このコードでやっていることは非常に単純で、極端に長い文字列(1行)をMIME::Lite::encode_8bit() 及び MIME::Lite::encode_7bit() に渡し、返り値の1行あたりの最大文字列長が990以内であるかを検証している。

で、以下その結果(実行環境はubuntu-8.04LTS-amd64/perl-5.8.8)。


1..5
ok 1 - use MIME::Lite;
ok 2 - 1937 bytes gotten, hugest line 990 bytes.
not ok 3 - 2043 bytes gotten, hugest line 1052 bytes.
# Failed test '2043 bytes gotten, hugest line 1052 bytes.'
# at X001_Huge_Line.t line 19.
ok 4 - 1937 bytes gotten, hugest line 990 bytes.
not ok 5 - 2043 bytes gotten, hugest line 1052 bytes.
# Failed test '2043 bytes gotten, hugest line 1052 bytes.'
# at X001_Huge_Line.t line 19.
# Looks like you failed 2 tests of 5.


文字列長が1980より大きい行を与えた場合、改行を2つ以上補完すべきところが、1つしか補完されない。そのためtest3やtest5では、最大で2043文字もある行が残ってしまっている。

取り急ぎ、メンテナさんに報告しておくか。

2009-04-15 追記
RTにてチケットを発行。
初RTだったので、うまくレポート出来たかは何とも言えないが、'MIME-Lite'でチケット検索すれば出てくるようになった。
間違って、状態を一旦"着手"にしてしまったのはご愛嬌><

さらに追記
既に5年前からあるチケットでも、同様の指摘がされていた。うーむ。。。

2009-5-25 追記
テストコードを置いていたサーバのドメインが移行されたので、テストコードへのリンクを変更。

2010-2-17 追記
もう有名な話でしょうけど、今やMIME::Liteを使うのは「モダン」ではありません。その上、メンテナンスもされていないそうです。
Email::SimpleEmail::Send, Email::Sender を使うことをお勧めします。

0 件のコメント: