[PHP-users 33661] Re: PEAR :: Mail_mimeDecode におけるマルチパートの取り出しについて
KOYAMA Tetsuji
koyama @ hoge.org
2008年 6月 16日 (月) 18:10:49 JST
小山です。
2008/6/16 Omori <toshi @ asama.net>:
> PEAR :: Mail_mimeDecodeでメールの解析処理をしようとしていたのですが
> マルチパートのメールの処理で、
>
> Content-Type: multipart/mixed; boundary="------------Boundary_VzNO'cXjoRsGb9s"
>
> のようにboundaryの途中に「'」の入ったメールがエラーになりました。
> RFCをぐぐって見たのですがこれ自体は間違いではないような気がするのですが、
> よくわかりません^^;
RFC 2046を見ると
boundary := 0*69<bchars> bcharsnospace
bchars := bcharsnospace / " "
bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
と「'」 が明示的に許可されているので、boundaryに「'」が入るのは
仕様違反ではないと思います。
> mimeDecode.phpの454行目付近の
> $splitRegex = '/([^;\'"]*[\'"]([^\'"]*([^\'"]*)*)[\'"][^;\'"]*|([^;]+))(;|$)/';
> を
> $splitRegex = '/([^;\']*[\']([^\']*([^\']*)*)[\'][^;\']*|[^;"]*["]([^"]*([^"]*)*)["][^;"]*|([^;]+))(;|$)/';
> とすることでうまく処理されているような気がしますがどうも正規表現は苦手で
> 正解かどうかもわかりません。
なるほど、「'」と「"」でくくられた場合をそれぞれ分けたんですね。
私にもこれが正しいかどうかの判断はできないので、バグレポート
してみてはどうでしょう?
http://pear.php.net/bugs/report.php?package=Mail_Mime
--
小山哲志@ビート・クラフト
koyama @ beatcraft.com
koyama @ hoge.org
PHP-users メーリングリストの案内