PHPでメール送信内容が文字化けするときの3つの確認ポイント mb_send_mail() 【エンコード】

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つの確認ポイントをチェックして、日本語が文字化けしないようにしましょう。

 

日常スコープのSNSシェア・いいね!
いつもありがとうございます。
記事のさいご

▲TOP