PHPで受けたメールの変換について少し調べたのでまとめておきます。
S-JISとかISO-2022-JPでエンコードされている事が多いので
でいけるかも(mb_convert_encodingはautoなので環境依存です。ケースバイケースでエンコードを指定してください)。
文字化けしている場合は
とするとうまくいく事が多い。
Linux上でメールの内容をgrepしようと思ったらQPエンコードだったので、QPのデコードをするPHPを作ってそれをシェルで呼び出すという事をしました。
ハマったのは、ディスプレイに表示する場合はquoted_printable_decode($str)で読める状態にエンコードするけれど、それをファイルに落とすと文字化けしているという状況。
いい加減ISO-2022-JPエンコードから脱却したいと考えているけれど、未対応のメーラー対策も考えるとエンコードした方が角が立たないんだな。
メールのタイトル
$subject = mb_decode_mimeheader($str)
S-JISとかISO-2022-JPでエンコードされている事が多いので
mb_convert_encoding(mb_decode_mimeheader($str), "UTF-8");
でいけるかも(mb_convert_encodingはautoなので環境依存です。ケースバイケースでエンコードを指定してください)。
Quoted-printable(QP)のメール変換
mb_convert_encoding(quoted_printable_decode($str), "UTF-8");
文字化けしている場合は
mb_convert_encoding(quoted_printable_decode($str), "UTF-8", "ISO-2022-JP");
とするとうまくいく事が多い。
Linux上でメールの内容をgrepしようと思ったらQPエンコードだったので、QPのデコードをするPHPを作ってそれをシェルで呼び出すという事をしました。
ハマったのは、ディスプレイに表示する場合はquoted_printable_decode($str)で読める状態にエンコードするけれど、それをファイルに落とすと文字化けしているという状況。
いい加減ISO-2022-JPエンコードから脱却したいと考えているけれど、未対応のメーラー対策も考えるとエンコードした方が角が立たないんだな。
コメント
コメントを投稿