メールのデコード(その2)

2006/10/23 | その他PEAR全般

結論から言うとメールのデコードは上手くできた。
デコードに際して2つのPEARファイルが必要になることは既に書いたが、.qmailからプログラムを呼び出したり、なんだかんだの関係で、それぞれを個々にメインファイルから呼び出すことにした(mimeDecode.phpのrequire_once文をコメントアウトした)。
以下が実際に記述したプログラム。
———————————————————–
<?php
 require_once(‘./lib/PEAR.php’);
 require_once(‘./lib/mimeDecode.php’);

 //標準入力からメール本体を抽出
 $source=”;
 $stdin=@fopen("php://stdin","r");
 while(!feof($stdin)){
  $source.=fgets($stdin,4096);
 }
 fclose($stdin);
 
 //メールをパースする
 $decoder = new Mail_mimeDecode($source);
 $params[‘include_bodies’] = true; //ボディを解析する
 $params[‘decode_bodies’] = true; //ボディをコード変換する
 $params[‘decode_headers’] = true; //ヘッダをコード変換する
 $structure = $decoder->decode($params);
?>

ここで$structureは構造体(オブジェクト)として返される(といってもまぁ配列のようにも扱えるわけだが)。このオブジェクトからは以下の値をもっている。

$structure->headers
 ヘッダ情報(配列で格納されている)
$structure->ctype_primary
 メールのコンテントタイプ(スラッシュより前)
$structure->ctype_secondary
 メールのコンテントタイプ(スラッシュより後)
$structure->body
 メールのコンテントタイプがmultipartでない場合のメール本体
$structure->parts
 メールのコンテントタイプがmultipartな場合のメール本体(構造体)

outlookなんかだとmultipart×multipartみたいな書式のメールになることがあるので、メール本体の処理を忠実におこなおうとすると再帰的処理をかけてやる必要がある。今回はoutlook無視なので、そこまではやらないつもりだけど。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net