home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

サイバー日野/2002/03/07/15/PHPでのメール送信時エンコーディング

作成日: 2002-03-07 15:45:29   /   last updated at: 2008-11-27 08:26:08
カテゴリ: PHP サイバー日野 

二、三日前にPHP掲示板でメール送信時に文字化けしてしまう部分を修正したことがある。その時に散々EUCSJIS変換で悩まされたのだが、この際そのときの「コツ」を書き付けとく。

結論から言うと、例えばSubject ヘッダーに対するEUC->SJIS変換は、

$subject = i18n_convert($subject,'JIS','EUC');
$subject = tree::mime_enc($subject);

こんなカンジで済ますことができる。

tree::mime_encの中身は

function mime_enc($str){
    if(get_magic_quotes_gpc()) $str = stripslashes($str);
    $encode = "=?ISO-2022-JP?B?" . base64_encode($str) . "?=";    //Bヘッダ+エンコード 
    return $encode; 
}

とまあこんなカンジ。ようするに、
''先にEUC->JIS変換をかませた後、改めてbase64_encodeとか言うのをすれば、インターネットで標準的なエンコーディングができる''ということらしい。
じっさい、この順番で行うようになってから文字化けがぴたりと収まった。

これ・・・会員管理用のdo_mail.incとかにも適用したほうがいいかなあ・・・。

original url: https://www.glamenv-septzen.net/view/13