アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームからPOSTで取得したデータをメール送信するページを作成したのですが、
「IIIIIIIVVVIVIIVIIIIXX」などの拡張文字が文字化けしてしまいます。

記述は下記のとおりです。

$comment = "IIIIIIIVVVIVIIVIIIIXXあいうえお";
mb_language("Japanese");
mb_internal_encoding("SJIS");
mb_send_mail("test@abc.jp",$subject,$comment,"From:from@abc.jp");

上記で送信すると、

??????????あいうえお

と、拡張文字だけ文字化けしてしまいます。
解決策をご存知のかた、よろしくお願いします。

A 回答 (1件)

mb_language("ja"); であれば、mb_send_mail()はiso-2022-jpのメールを作成しますから、iso-2022-jpに存在しない文字は送れません。



どうしても送りたいとなると、mb_language("uni"); にしてutf-8のメールを送信するしかありません。対応していないメーラでは全然読めなくなりますが・・。

http://www.php.net/manual/ja/function.mb-languag …
http://www.php.net/manual/ja/function.mb-send-ma …

あるいは(非常識と言われるのを承知で)mail()を使ってSJISのまま送るとか(Content-Typeも自前で付加しないといけないでしょうね)。
    • good
    • 0
この回答へのお礼

早速の回答をありがとうございます。

会員制のサイトで、会員登録の際、不特定の人へメール送信しますので、やはりutf-8のメールは問題が・・・。

さらに色々と調べて、
mb_languageを省略し、
mb_internal_encoding("SJIS-win");
で送信してみると文字化けしませんでした。

メーラーによっては文字化けしていそうな不安もあるのですが、
しばらくこれで様子をみてみようと思います。

ありがとうございました。

お礼日時:2008/01/29 23:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!