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行にしてるだけです。
もっとうまい正規表現があるような気もするんですけどまぁいいかと。