2021-06-01
PHPフォームからのメール送信で環境依存文字の文字化けを解消する
phpのmb_sendmail関数作成したお問合せフォーム。㈱や①といった、依存文字が文字化けして「?」と、受信した環境で表示されてしまう現象。
最近知ったのですが、メール本文をISO-2022-JP-ms
という文字コードでエンコードすれば解決しました。
$mail_body = mb_convert_encoding($mail_body, 'ISO-2022-JP-ms', 'UTF-8');
なお、この方法はPHP5.2.1から使えます。(php.net参照)
シンプルでいいですね。以前は㈱→株
といったように、メジャーな環境文字だけ送信前に置換して対応していました。スマートではありませんね。
正直なところ、あまり気にする必要もないかと思いますが、クライアントから指摘された場合に、知っているのと知らないのでは違います。
時間もかからないので、仕上げの確認項目に入れて、ひと手間かけるのも無駄ではないと思います。
参考リンク
mb_convert_encoding – PHPマニュアル