[PHP-users 10808] メザコヴロミネミュピボザベボヴアークーキンヴメザコヴロミネミュピボザベボヴアークーエンヴ添付ファイルの分別について

Yoshitake Shinohara php-users@php.gr.jp
Mon, 14 Oct 2002 16:58:42 +0900 (JST)


よしたけ@YYNです。

> ここの、mimeDecode.phpを使うことにより、簡単にデコードできます。
> 使い方は、mimeDecode.phpにかかれていたと(思います)

今確認したところ、簡単にしかかかれてなかったので、あれじゃわかりにくい
ですね。

わたしは下のような感じで扱ってます。(コード抜き出しなのでそのまま動く
かどうかは保証できませんです)

#本来は、マルチパート時のいれこも考慮しないといけないんでしょうけど、
#滅多にそんなメール来ないので無視してます(^^;

---------------------ここから
include_once("mimeDecode.php");

// メールパース
$params['include_bodies'] = TRUE;
$params['decode_bodies']  = TRUE;
$params['decode_headers'] = TRUE;
$params['input']          = $mail_text;
$params['crlf']           = "\n";
$structure = Mail_mimeDecode::decode($params);
//var_dump($structure);

// ヘッダ取得
$headers = @(array)$structure->headers;

// Subject取得
$subject = mb_convert_encoding($headers["subject"], "EUC-JP","JIS,UTF-8,SJIS,EUC-JP");

if (!empty($structure->parts)) {
	// マルチパートメール処理
	for ($i = 0; $i < count($structure->parts); $i++) {
		$parts = $structure->parts[$i];
		$contenttype = $parts->ctype_primary ."/". $parts->ctype_secondary;
		$contentfilename = $parts->d_parameters["filename"];
		if(eregi("text",$contenttype)){
			$part_body = mb_convert_encoding($parts->body, "EUC-JP","EUC-JP,JIS,UTF-8,SJIS");
		} else {
			$part_body = mb_convert_encoding($parts->body, "BASE64","PASS");
		}

		//ここに処理
	}
} elseif (isset($structure->body)) {
	// シングルパート時
	$body = mb_convert_encoding($structure->body, "EUC-JP","EUC-JP,JIS,UTF-8,SJIS");

	//ここに処理
}


------------------------
YYN partnership company
Yoshitake Shinohara
yoshi@yyn.jp