[PHP-users 15029]Re: メール件名の文字化けについて

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2003年 5月 2日 (金) 20:30:40 JST


小泉です。

kohara <skohara @ fb3.so-net.ne.jp> wrote:

> #!/usr/local/bin/php
> <?php
>   $To = 'test @ example.co.jp';
>   $subject = 'てすとてすとてすとてすとてすと';
>   $msg = 'てすと';
> 
>   $subject = mb_convert_encoding($subject,"JIS","auto");
>   $msg = mb_convert_encoding($msg,"JIS","auto");
> 
>   mb_send_mail($To,$subject,$msg);
>   echo "メールを送信しました";
> ?>
> ----------------------------------------------------------

このコードが EUC-JP で書かれていると仮定して、

#!/usr/local/bin/php
<?php
  mb_language('Japanese');
  mb_internal_encoding('EUC-JP'); // ☆

  $To = 'test @ example.co.jp';
  $subject = 'てすとてすとてすとてすとてすと';
  $msg = 'てすと';

  mb_send_mail($To,$subject,$msg);
  echo "メールを送信しました";
?>

これでどうでしょうか?
もし、mb_send_mail() の時点で、メール用のエンコーディングが ISO-2022-JP 
以外に設定されている場合は、ヘッダーが2行にわたっても正しくエスケープシ
ーケンスが付加されません。

☆の行をはずすと、おそらくメールのヘッダに

Content-Type: text/html; charset=UTF-8

が現れると思いますが、これは仕様です。

# なお、php.ini 内で、mbstring.language=Japanese を指定しておけば、この
# ような問題は起こらないはずです。




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