[PHP]IMAPでメールの文字コード判定を行うには

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

    

}

?>

投稿者:

Takuya

Digital crafts(man|dog). Love photography. Always making otherwise sleeping. born in 1984.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中