なぜかimap_headerinfo()の戻り値にはContent-Typeが含まれないので、
直に取得する力技で解決。
When you try to get charset of a mail on IMAP, imap_headerinfo() doesn’t include ‘Content-Type’ in the return value.
Below is a function to get type of charset from a mail header directly by calling imap_fetchheader.
<?
/**
@context IMAPハンドル
@number メールのID
@defcharset 失敗した時に返すデフォルトの文字セット名
@return 文字セット名
*/
function imap_getcharset($context, $number, $defcharset = "iso-2022-jp")
{
// Get charset
$h = imap_fetchheader($context, $number);
$mc = preg_match("/charsets*=s*(.+?)[;n]/s", $h, $m);
$charset = $m[1] ? strtolower(trim($m[1])) : $defcharset;
}
?>