[PHP-users 16887]Re: メール送信時に文字化け

キャスター マイルド caster_mild_49401219 @ hotmail.com
2003年 7月 22日 (火) 11:19:14 JST


こんにちは、キャスターです。

Kishimoto様、ご返信ありがとうございました。
ご指摘の通り、メール本文に対してのMIMEエンコード処理を
やめれば、うまくいきました!

ただ、以前の質問には、書いていなかったのですが、
subject欄に、同様の「申込」や、「予約」と言う文字を入れると
やはり文字化けしてしまうようです。


同様に、以下にソースを載せます。(前回、functionが2つ抜けておりました・・
・)
よろしくお願い申し上げます。


function sjis2jis($sjis){
$jis = '';
$ascii = true;
$b = unpack("C*", $sjis);
for ($i = 1; $i <= count($b); $i++) {
if($b[$i] >= 0x80){
if ($ascii) {
$ascii = false;
$jis .= chr(0x1B).'$B';
}
$b[$i] <<= 1;
if ($b[$i+1] < 0x9F) {
$b[$i]   -= ($b[$i] < 0x13F) ? 0xE1 : 0x61;
$b[$i+1] -= ($b[$i+1] > 0x7E) ? 0x20 : 0x1F;
} else {
$b[$i] -= ($b[$i] < 0x13F) ? 0xE0 : 0x60;
$b[$i+1] -= 0x7E;
}
$b[$i] = $b[$i] & 0xff;
$jis .= pack("CC", $b[$i], $b[$i+1]);
$i++;
} else {
if (!$ascii) {
$ascii = true;
$jis .= chr(0x1B).'(B';
}
$jis .= pack("C", $b[$i]);
}
}
if (!$ascii) $jis .= chr(0x1B).'(B';
return $jis;
}

function HANtoZEN_SJIS($str_HAN){
$table_han2zen_sjis = array(0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,
0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,
0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,0x8360,0x8363,0x8365,0x8367,
0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,
0x837D,0x837E,0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,
0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B);
$str_ZEN = '';
$b = unpack("C*", $str_HAN);
for($i = 1; $i <= count($b); $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
$b[$i] -= 0xA1;
$c1 = ($table_han2zen_sjis[$b[$i]] & 0xff00) >> 8;
$c2 = $table_han2zen_sjis[$b[$i]] & 0x00ff;
$str_ZEN .= pack("CC", $c1, $c2);
}elseif($b[$i] >= 0x80){
$str_ZEN .= pack("CC", $b[$i], $b[$i+1]);
$i++;
}else{
$str_ZEN .= pack("C", $b[$i]);
}
}
return $str_ZEN;
}
// 中略
$subject = "予約完了!申し込みありがとうございます。";
$subject = mime_enc($subject,1);
if(preg_match("/[\x80-\xA0]/",$mingle_name)){
$name = mime_enc($mingle_name,1);//日本語ならMIMEヘッド
}
// 中略
if(!mail($mail_address, $subject, $body, $head)){
echo "メール送信が失敗しました";
}

_________________________________________________________________
キャリアアップを目指すあなたのナビゲーター MSN 就職・転職  
http://career.msn.co.jp/ 



PHP-users メーリングリストの案内