trash-area.com ≫ blog ≫ プログラミングphp[php] PEAR::Mail_mimeDecode で Thunderbird からのメールをパースする。

2008年11月24日 0

PEAR::Mail_mimeDecode で Thunderbird から送信されたメールをパースできなくってちょとハマりました。
その解決方法のメモです。

バージョンは PEAR::Mail_mimeDecode が 1.5.0。
Thunderbird が 2.0.0.18 。

探し方が悪いのかなんだかよくわかりませんが解決方法が見つからず、
しょうがないので PEAR::Mail_mimeDecode をいじることに。

つか PEAR って勝手にいじって使ってていいものなんですかね。
よくわかりません。

mimeDecode.php の 416行目あたりから始まる _parseHeaders() がターゲット。

    function _parseHeaders($input)
    {
 
        if ($input !== '') {
            // Unfold the input
            $input   = preg_replace("/\r?\n/", "\r\n", $input);
            $input   = preg_replace("/\r\n(\t| )+/", ' ', $input);
            // add start ------------------------------------------
            $input   = preg_replace("/;\r\n/", ";", $input);
            // add end --------------------------------------------
 
            $headers = explode("\r\n", trim($input));
 
            // 以下省略

メーラーによって Content-Type の表現方法が違うみたいなんですね。

Yahoo!メール とか。

Content-Type: multipart/mixed; boundary="------------040307090604090101060701"

Thunderbird とか。

Content-Type: multipart/mixed;
boundary="------------040307090604090101060701"

で、この 2行の時にパースしてくれないみたいなので強制的に 1行にしてるだけです。
もっとうまい正規表現があるような気もするんですけどまぁいいかと。

ソーシャルブックマーク
はてな Livedoor del.icio.us
関連してそうな記事
同じカテゴリーの別の記事
タグ
, , ,
トラックバックURL
コメント

コメントをどうぞ

*反映されるまでに時間がかかることがあります。
*メールアドレスはアバターの使用に使います。