2021-06-01

PHPフォームからのメール送信で環境依存文字の文字化けを解消する

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マニュアル