[PHP-users 28004] Re: 件名文字化け防止
Dilemma
dilemma @ object.hn.org
2006年 1月 2日 (月) 01:57:50 JST
石田です。
mail関数を使用し、日本語内容のメールを送信する場合
文字をエンコードする必要があります。
以前、関数を作ったので以下に記述します。
参考になれば幸いです。
function send_mail($from, $to, $subject, $body, $from_name = ""){
//X-Mailerをphpversition等で指定するとHotMailでは迷惑メールとして扱われ
る
$from_name = mb_convert_encoding($from_name,"JIS","EUC-JP");
$subject = mb_convert_encoding($subject,"JIS","EUC-JP");
$body = mb_convert_encoding($body,"JIS","EUC-JP");
if($subject != "") $subject = mime_enc($subject);
$body = str_replace("\r\n", "\n", $body);
$body = str_replace("\r" , "\n", $body);
if($from_name){
$head .= "From: ".mime_enc($from_name)." <".$from.">\n";
}else{
$head .= 'From: "'.$from.'" <'.$from.'>'."\n";
}
$head.= "X-Originating-IP: [{$_SERVER['SERVER_ADDR']}]\n";
$head.= "X-Originating-Email: [{$from}]\n";
$head.= "X-Sender: {$from}\n";
$head.= "Mime-Version: 1.0\n";
$head.= "Content-Type: text/plain;charset=ISO-2022-JP\n";
#$head.= "X-Mailer: PHP/".phpversion();
if(!mail($to, $subject, $body, $head)) return FALSE; else return
TRUE;
}
function mime_enc($str){
$encode = "=?iso-2022-jp?B?".base64_encode($str)."?=";
return $encode;
}
PHP-users メーリングリストの案内