PHPフォームから送信したメールがMac Mailで文字化け その対処方法

iPhone・iPadをきっかけに、Apple製品への関心が高まり、パソコンもMacを使う人が随分増えましたね。私もその一人で、今までWindowsメインだったのが、気がつけば家中Apple製品にあふれています。

ただ、iPhoneやMacから送信したメールが、先方で文字化けすることがたまにあります。文字コードの問題なのですが、今日も突然そんなことを思い出し、以前制作したWebサイトのお問い合わせフォームからのメールを、Mac OS X 10.9.1 Maverics のMailで受信したらどうなるか、気になってテスト送信してみました。

お問い合わせフォーム

すると、案の定。受信したメールの本文が文字化けしています。

文字化けしたメール

しかし、Webブラウザや、Gmail、iPhoneアプリ「nPOP」で見てみると、正常に表示されています。

正常に受信したメール

Mac OS X 10.9.1 Maverics のMailで受信したメールの本文だけが文字化けしている状態ですね。

そこで、PHPフォームの記述を以下のように変更しました。

(旧)

mb_language("ja");
$from = mb_convert_kana($_POST{mail},"KVrna");
$to = "●●●@●●●●●●";
$subject = "ホームページからお問い合わせがありました";
$subject = '=?ISO-2022-JP?B?' . base64_encode(mb_convert_encoding($subject, 'ISO-2022-JP', 'AUTO')) . '?=';
$message = stripslashes($message);
mail($to,$subject,$message,"From:$from");

↓↓↓

(新)

mb_language("ja");
$from = mb_convert_kana($_POST{mail},"KVrna");
$to = "●●●@●●●●●●";
$subject = "ホームページからお問い合わせがありました";
$subject = '=?ISO-2022-JP?B?' . base64_encode(mb_convert_encoding($subject, 'ISO-2022-JP', 'AUTO')) . '?=';
$message = stripslashes($message);
$message = mb_convert_encoding($message,"JIS","UTF-8");
mail($to,$subject,$message,"From:$from");

 

また、metaタグの文字コードもあわせておきます。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 

これで、MacのMailでも文字化けせずに、メールを受信できるようになりました。

「初心者が自分で更新できる最短ホームページテンプレート」を使っているかた、お問い合わせフォーム、PHPメールフォームにお困りのかたはぜひご参考ください。