mimeヘッダーを解析する

メールのヘッダーというものは、改行で区切られるのかと思ったらそうではないらしい。
たとえば、こんなヘッダーがある

Date: Tue, 19 Aug 2008 09:23:57 +0900 (JST)
Subject: [Fwd:
=?ISO-2022-JP?B?(途中省略)U?=
=?ISO-2022-JP?B?(途中省略)h?=
=?ISO-2022-JP?B?(途中省略)Q==?=
From: =?ISO-2022-JP?B?(途中省略)C?= <(送信元)>
To: (送信先)
User-Agent: SquirrelMail/1.4.5-1_fc4
MIME-Version: 1.0
Content-Type: multipart/mixed;boundary=”—-=_20080819092357_80457″
X-Priority: 3 (Normal)
Importance: Normal

Subjectが途中改行されているけれども、これは正しいらしい。というわけで、ヘッダーを解析するのは容易ではなさそうで、pearのモジュールにMail_mimeDecodeというものが出ているのでこれを使ってみることにした。
ただインストールしようとしたらpearのバージョンを上げろと言われて戸惑った。

# pear install mail_mimedecode
pear/Mail_mimeDecode requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11
pear/Mail_Mime requires PEAR Installer (version >= 1.6.0), installed version is 1.4.11
pear/Mail_Mime requires package “pear/Mail_mimeDecode”
No valid packages found
install failed

サイトを調べてみたら設定を無理やりかえるとか強引な手法が多かったけれど、僕の環境の場合にはすんなりいった。

# pear upgrade pear
downloading PEAR-1.7.2.tgz …
Starting to download PEAR-1.7.2.tgz (302,744 bytes)
…………….done: 302,744 bytes
downloading Archive_Tar-1.3.2.tgz …
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
…done: 17,150 bytes
downloading Structures_Graph-1.0.2.tgz …
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
…done: 30,947 bytes
downloading Console_Getopt-1.2.3.tgz …
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
…done: 4,011 bytes
upgrade ok: channel://pear.php.net/Console_Getopt-1.2.3
upgrade ok: channel://pear.php.net/Structures_Graph-1.0.2
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.2
upgrade ok: channel://pear.php.net/PEAR-1.7.2
PEAR: Optional feature webinstaller available (PEAR’s web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR’s PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR’s PHP-GTK2-based installer)
To install use “pear install pear/PEAR#featurename”

これでpear install mail_mimedecodeをすればうまくダウンロードできた。
実際にコード解析したものについては次回…

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です