PHPでメール送信内容が文字化けするときの3つの確認ポイント mb_send_mail() 【エンコード】
PHPでメール送信内容が文字化けするときの対処方法3選を紹介します。
- 目次 -
PHPのmb_send_mail()でメール送信すると文字化け
PHPでmb_send_mail()を使ってメール送信したとき、メール内容の日本語部分が文字化けしたことがあります。今回はメールが文字化けした時の3つの確認ポイントでの解決方法を紹介します。
確認1.PHPファイルの文字コードセットがUTF-8になっているか
まずは初めにソースを記載しているPHPファイル自体の文字コードが正しいかを確認する必要があります。文字コードに決まりはありませんが、WEBサイトの多くは全国で利用可能なUTF-8を使用することが多いです。
文字コードの確認方法
テキストエディタなどで文字コードを確認・変更できます。
下記はサクラエディタの例で、UTF-8になっていることがわかります。また、BOMはチェックを外しておきます。BOMは昔日本語のバイト数が半角英数と異なるため、帳尻合わせのために生まれた技術ですが、現在では逆に誤動作を起こす発火材にもなってしまうこともあり、BOMを設定しないことが通例となっています。
確認2.出力する文字が日本語になっているか
メール送信する前から、送信内容が既に日本語に設定されていない場合、日本語で出力できないかもしれません。
以下でページ自体を日本語に対応できるようにしてください。下記コードにより、メール内容だけでなく、ページ内すべての文字化けも併せて改善することができます。
//ページの文字コードをUTF-8に設定する mb_internal_encoding("UTF-8");
確認3.メール送信文の設定が日本語になっているか
これが最も重要な部分ですが、メール送信文を日本語設定にしておく必要があります。メール送信するまでの間で下記コードを挿入し、メール送信文を日本語に設定してください。
//メール送信文を日本語に設定 mb_language("ja");
なお、本来設定できる引数には以下がありますが、日本語に設定する場合は”ja”でOKです。
mb_language()で設定できる文字設定
- “Japanese”
- “ja”
- “English”
- “en”
- “uni”
日本語を文字化けしないようにメール送信しよう
せっかくのメール送信が、文字化けして読めないと残念ですよね。3つの確認ポイントをチェックして、日本語が文字化けしないようにしましょう。