[PHP-users 16883]Re: メール送信時に文字化け
Kishimoto Yuu
yu-kishimoto @ saturin.co.jp
2003年 7月 22日 (火) 10:47:23 JST
こんにちは、Kishimoto と申します。
キャスター マイルド <caster_mild_49401219 @ hotmail.com> wrote:
> redhat7.3 php-4.1.2-7.3.6 apache-1.3.27-2 sendmail-8.11.6-25.73
> を使用しています。
>
> PHPからメール送信時に、特定の文字が文字化けしてしまいます。
> 例えば、「申し込み」と言う文字のうち、「申」が・・・
> また、「予約」という時の「予約」そのものが、蘭 と言う具合に文字化けしてしま
> います。
[...]
> function mime_enc($usr_str,$mime=0){
> if(get_magic_quotes_gpc()) $usr_str = stripslashes($usr_str);//\は取る
> $usr_str = HANtoZEN_SJIS($usr_str);
> $enc = sjis2jis($usr_str); //JISに変換
> if($mime) $encode = "=?iso-2022-jp?B?" . base64_encode($enc) . "?="; //B
> ヘッダ+エンコード
> else $encode = $enc;
> return $encode;
> }
>
> // 中略
>
> $body = "申し込みありがとうございます。\n予約完了!\n";
> $body = str_replace("\r\n", "\n", $body); //改行文字の統一
> $body = str_replace("\r", "\n", $body);
> if(preg_match("/[\x80-\xA0]/",$body)){ //本文に日本語がある場合JIS変換
> $body = mime_enc($body,0);
> }
> if(!mail($mail_address, $subject, $body, $head)){
> echo "メール送信が失敗しました";
> }
上記のソースでは、メール "本文" に対して MIMEエンコード処理を
行っているように見受けられますが、これがいけないのでは
ないでしょうか?
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Kishimoto Yuu <yu-kishimoto @ saturin.co.jp>
PHP-users メーリングリストの案内