2015年5月25日月曜日

phpのmailフォームで送信したメールが文字化けする

みなさん、こんにちは


PHPで作成されたWebのメールフォームから送られたメールが文字化けする。
とのことでしたので、内容を確認してみました。


Subject: 縺雁撫縺・粋繧上○ ← こんな感じに化けるそうです。
おそらく正しくは、Subject: お問い合わせ なのでしょうけど。
UTF-8からShift-JISの変換に失敗したときの症状です。


PHPのコード確認してみます。

$send_contact=mail($to,$subject,$message,$headers);

う~ん・・・・
これだけじゃぁ、エンコード考えてないので文字化けしちゃうよね。


うちの会社、いったい何処の外注に依頼したのでしょうか・・・ orz


mail()使うんだったら

mb_internal_encoding("UTF-8");
$send_contact=mail($to,mb_encode_mimeheader($subject,'UTF-8'),mb_convert_encoding($message,'UTF-8'),$headers);

こんな感じでしょうか。


でも、mb_send_mail()を使って

mb_language("ja");
mb_internal_encoding("UTF-8");
$send_contact=mb_send_mail($to,$subject,$message,$headers);

としたほうがスッキリしているかも知れません。
$toと$headersにはコード上、半角文字しか入りませんから・・・・。


ところで、UTF-8指定しているところから想像できると思いますが、サーバーはLinuxを使用しています。
元ソースの改行コードをみてみると、"\r\n"となっていてWindows仕様になっているので、"\n"に変更しておきました。


うちの会社、いったい何処の外注に依頼したのでしょうか・・・ orz


ではでは~☆ミ

0 件のコメント:

コメントを投稿