みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メールフォームの件名が文字化けします

PHPでメールフォームを作っていて、以前のサーバーではエラーも無く動いていたのですが、新しいサーバーでは件名がどうしても文字化けしてしまいます。(※本文も化けていましたが解決しました)

色々調べて色々試してみたのですが上手く動作せず・・・

以下にPHPの必要と思われる部分を書いておきますので、ご解答の程よろしくお願いいたします。
ちなみにPHPのバージョンは4.4.2です。

<?php header("Content-Type:text/html;charset=Shift_JIS"); ?>
<?php
$mailto = "aaa@bbb.ccc"
$subject = "フォームからのメール";
~各種設定・エラーチェック等省略~
$body=mb_convert_encoding($body,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS");
$subject=mb_encode_mimeheader($subject,"ISO-2022-JP");

if($from_add == 1) {
$from = $_POST['E-mail1'];
$header="From: $from\nReply-To: ".$_POST['E-mail1']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
} else {
$header="Reply-To: ".$_POST['E-mail1']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
}
if($mailcheck == 0 || $sendchk == 1) {
mb_send_mail($mailto,$subject,$body,$header);
if($remail == 1) { mb_send_mail($reto,$resubject,$rebody,$reheader); }
}
else { htmlHeader();
?>
~送信確認画面レイアウト・その他処理省略~
<?php } ?>

投稿日時 - 2008-05-13 15:50:34

QNo.4019310

すぐに回答ほしいです

質問者が選んだベストアンサー

#あれこれやリ過ぎて、phpが自動処理する部分と整合が取れなくなってるに1票。

mb_send_mail()を使うのであれば

  mb_language('ja');
  mb_internal_encoding('sjis');

を書いておけば、自分でiso-2022-jpにしたり、mb_encode_mimeheader()を通したり、あれこれheaderをセットしたりしなくても化けませんよ。

mb_send_mail()の第1~第3引数はmb_internal_encodingの文字コードからmb_languageで指定した標準メール(jaであればiso-2022-jp)に自動変換されます(mimeも含む)。

投稿日時 - 2008-05-13 16:03:48

お礼

shimixさんのお陰であっさりと直ってしまいました。
まだまだPHP初心者なもので、こういう部分がイマイチ理解できていないんですよねぇ・・・(汗
ともあれ、本当にありがとうございました。
もっと勉強したいと思います。

投稿日時 - 2008-05-13 16:31:51

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問