[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 メーリングリストの案内