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