[PHP-users 26193] Re: PHP4.4.0でメールを送信すると、題名が文字化けします。

Yasuo Ohgaki yohgaki @ ohgaki.net
2005年 7月 16日 (土) 02:29:36 JST


大垣です。

確かにおかしな動作をPHP-5.0.4でも確認できました。

seijun86 @ yahoo.co.jp wrote:
> OSにRedHat Enterprise Linux ES 3.0を使っています。PHPを4.3.11から4.4.0に入れ替
> えたのですが、メールを送信すると、見出しが文字化けします。テスト用に、次のよう
> なスクリプトmail.phpを作っています。また、PHP4.3.11では文字化けしないようなの
> ですが・・・。
> 
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html;charset=euc-jp">
> <title>メールの送信テスト</title>
> </head>
> <body>
> <h1>メールの送信テスト</h1>
> <br>
> <?php
> print "メールの送信テスト:\n";
> print "<br>\n";
> $mailadr = "hoge @ wfuga.co.jp";
> //$subject = "Subject";
> $subject = "題名";
> $header = "From: taro @ fuga.co.jp\nReply-to: taro @ fuga.co.jp\nR-Mailer: PHP/". 
> phpversion();
> $message = "今日は、テストです。\n";
> $message .= "今日は、テストです。\n";
> $message .= "今日は、テストです。\n";
> $message .= "今日は、テストです。\n";
> $message .= "今日は、テストです。\n";
> 
> mb_language("Japanese");
> if (mb_send_mail($mailadr, $subject, $message, $header) == true)
>     print $mailadr . "にメールを送信しました。";
> else
>     print $mailadr . "にメールを送信出来ませんでした。";
> ?>
> </body>
> </html>
> 
> これで、メールを送信すると、メーラーにShuriken Pro 4を使った場合、見出しが
> 「L名」というように化けてしまうのです。ちなみに、本文は化けません。回避策を教
> えていただければ有り難いのですが。
> 
> なお、/usr/local/lib/php.iniの[mbstring]は、次のようになっています。
> [mbstring]
> mbstring.language = Japanese
> mbstring.internal_encoding = EUC-JP
> mbstring.http_input = auto
> mbstring.http_output = SJIS
> mbstring.detect_order = auto
> ;mbstring.encoding_translation = off
> mbstring.encodign_translation = on
> mbstring.substitute_character = none;
> 

少なくとも私の環境(PHP-5.0.4)では、どうもinternal_ecordingを指定していても
ISO-8850-1としてしまう場合がある事があることは分かりました。

私の環境の場合、スクリプトからinternal_encodingを指定(EUC-JP)しても無視され
php.iniから指定すると正常に動作しました。

# mbstring.cのFUNCTION(mb_send_mail)のSubjectを処理する部分の
# orig_str.no_encoding = MBSTRB(current_internal_encoding)が何故かデフォルトの
# ISO-8859-1のまま。このためISO-5589-1 => ISO-2022-JPへ変換し化けていました。
# 全角スペースを入れて動作することは説明できないので何か他にもあるのかも
# しれません。

PHP4とPHP5で多少違いは在るとは思いますが、PHP5ではこの辺りがおかしいようです。
自分でも見て見ますが、さっと見てみた限りでは原因は分かりませんでした。個人的に
は困っていないのでいつデバッグする事になるかは分かりません。

パッチを作った方がいらっしゃいましたらphp-dev @ php.gr.jpの方にメールをお送り下
さい。コミットしておきます。

-- 
Yasuo Ohgaki




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