- 締切済み
中国語(GB2312)のメール送信方法
下記の方法でEmailを送信しようとしているのですが、中国語の文字が「?」または激しく文字化けしてしまいます。 送信元のファイルはUTF-8です。 mb_internal_encoding("GB2312"); $to = "to@test.com"; $from_name = mb_convert_encoding("中国語名","GB2312","AUTO"); $from_name = mb_encode_mimeheader("中国語名","GB2312","B"); $subject = mb_convert_encoding("中国語題名","GB2312","AUTO"); $subject = mb_encode_mimeheader("中国語題名","GB2312","B"); $headers.="Content-type: text/plain; charset=GB2312\r\n"; $headers.="Content-Transfer-Encoding:8bit\r\n"; $headers.="From: ".$from_name."<from@test.com>\r\n"; $headers.="Reply-To: ".$from_name."<from@test.com>"; $body = mb_convert_encoding("中国語本文","GB2312","AUTO"); mail($to,$subject,$body,$headers); 上記方法で日本語メールを送信した場合、GB2312をISO-2022-jpに変更しただけで文字化けもなく送信できました。 中国語の場合は何か特別な処置が必要なのでしょうか。 どなたかご存知の方教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
そもそも変換がうまくいっていない気がします。 from_name = mb_convert_encoding("中国語名","GB2312","AUTO"); $subject = mb_convert_encoding("中国語題名","GB2312","AUTO"); $body = mb_convert_encoding("中国語本文","GB2312","AUTO"); これらの変換時に変換元コードとして "auto" を指定していますが、 > encoding-listは配列またはカンマ区切りの文 字エンコーディングのリストです。 >("auto" は、 "ASCII, JIS, UTF-8, EUC-JP, SJIS"に展開されます。) http://itbtech.itboost.co.jp/man/php_man/function.mb-detect-order.html ということですので、変換元がUTF-8であるという 認識がされない可能性が大いにあるような 気がします。 入力がUTF-8のみなら、"UTF-8"で決めうちでいいのではないでしょうか。 そして、変換がうまくいったかどうかを確認するために いきなり mail($to,$subject,$body,$headers); するのではなく、ファイルに書き出すなりして UTF-8→gb2312 への変換が正しく行われているかを 確認すべきだと思います。