なぜか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;
    
}
?>