phpの勉強中であります。躓くところを残さずにはいられません。。
内部のPHPのコードが”UTF-8”の場合にメール送信する際に送られてくるメールが文字化けして読めないことがあります。
PHPでの文字コードを変換するには”mb_convert_encoding関数”を使うそうですが、これでは本文の文字コードは”SJIS”に変換できたのですが、タイトル部分などのヘッダ情報は文字化けしたままでした。
そこで調べたところ、
mb_language関数、mb_internal_encoding関数
が有効だとわかりましたのでご紹介します。
下記のコードは、申込みフォームからPOST関数で受け取った情報を送信するページです。
<?php $plan=$_POST['plan']; $price=$_POST['price']; $name=$_POST['name']; $ruby=$_POST['ruby']; $yubin=$_POST['yubin']; $city=$_POST['city']; $addr1=$_POST['addr1']; $addr2=$_POST['addr2']; $tel=$_POST['tel']; $fax=$_POST['fax']; $email=$_POST['email']; $shiharai=$_POST['shiharai']; $message=$_POST['message']; $to="info@aa.com"; $message=" 契約プラン:$plan \n 費用:$price \n 名前:$name \n フリガナ:$ruby \n 住所:$yubin $city $addr1 $addr2 \n 電話番号:$tel \n FAX:$fax \n メールアドレス:$email \n 支払い方法:$shiharai \n 連絡事項: \n$message \n"; //$message = mb_convert_encoding($message, "SJIS", "ASCII,JIS,UTF-8,EUC-JP,SJIS"); mb_language('Japanese'); mb_internal_encoding("UTF-8"); if(mb_send_mail($to, 'タイトル部分',$message,'From: sample@aa.com')) {echo "<h3>申し込みありがとうございます。</h3><p>担当が内容を確認後ご入力いただいたメールアドレス宛に受付確認のメールを返信いたします。</p>"; } else { echo "<h3>申し訳ございません。エラーにより送信できませんでした。再度ご入力いただき送信していただきますようお願いいたします。</h3><a href=\"/\">トップページに戻る</a>"; } ?>
コメントアウトのしてある
//$message = mb_convert_encoding($message, "SJIS", "ASCII,JIS,UTF-8,EUC-JP,SJIS");
ではタイトル部分の文字コードは変換できません。(私が無知なせいもありますが。。)
以下の部分で文字コードを上手く変換してくれるようです。
mb_language('Japanese');
mb_internal_encoding("UTF-8");
そして以下の部分でメールを送信しています。
if(mb_send_mail($to, 'タイトル部分',$message,'From: sample@aa.com'))
参考URL1:http://www.res-system.com/weblog/item/478
参考URL2:http://www.securehtml.jp/utf-8/php_utf_mail.html