ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者PHP講座コミュの受信したメールの文字化け

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。かおりんと申します。
まったくの初心者で恐縮ですが、もし力を貸していただけるようでしたらアドバイスをいただけると嬉しく思っております。
よろしくお願いいたします。

HTMLは分かるのですが、PHPがまったく分からないため、PHPに詳しいプログラマさんに発注させていただき、メール送信フォーム用のPHPを組んでいただきました。
そのプログラマさんには、現在連絡がつきません。

■問題は、受信したメールが全て文字化けしてしまうということです。
文字コードの部分が問題かと思いまして、いろいろ検索した過去トピックを参考にやってみましたが改善しませんでした。できれば、作った方に修正をお願いしたいのですが、納品後は電話が繋がらない状況です。なんとか対処したいのですが、どこを治していいのか、もうお手上げです・・・。

フォームの内容は以下になります。

<?php
//---------------------------------------
//---------------------------------------
// 送信先メールアドレスは下のメールアドレスを変更して下さい。
//---------------------------------------
//---------------------------------------
include('../ini_DEFINE.php');

include('smarty/Smarty.class.php');

$st = new Smarty();

$st->template_dir = ".";
$st->compile_dir = "./templates_c";
$st->cache_dir = "./cache";
$st->cache_dir = "./cache";
$st->left_delimiter = '<{';
$st->right_delimiter = '}>';

$gid = ($_REQUEST['gid']); // 画面ID

$namae = ($_REQUEST['namae']); // お名前
$EMAIL = ($_REQUEST['EMAIL']); // メールアドレス
$comment = ($_REQUEST['comment']); // 内容

switch( $gid ) {
case "FIN": // 完了

// 管理者に送信
$tomail = $frommail;

$header = "From: ".$frommail."\n";
$header .= "To: ".$tomail."\n";
$header .= "MIME-Version: 1.0";
$header .= 'Content-type: text/plain; charset="iso-2022-jp"';
$header2 = $header;

$body = "ホームページからのお問合せがありました。\n";
$body .= "\n";
$body .= "【お名前】".$namae ."\n";
$body .= "【メールアドレス】".$EMAIL."\n";
$body .= "【内容】\n".$comment."\n";
$body .= "\n";
$body .= "----------------------------------------\n";
$body .= "Server-Name : "; $body .= getenv("SERVER_NAME"); $body .= "\n";
$body .= "Server-Protocol : "; $body .= getenv("SERVER_PROTOCOL"); $body .= "\n";
$body .= "Server-Port : "; $body .= getenv("SERVER_PORT"); $body .= "\n";
$body .= "Gateway-Interface : "; $body .= getenv("GATEWAY_INTERFACE"); $body .= "\n";
$body .= "Request-Method : "; $body .= getenv("REQUEST_METHOD"); $body .= "\n";
$body .= "Script-Name : "; $body .= getenv("SCRIPT_NAME"); $body .= "\n";
$body .= "HTTP-Referer : "; $body .= getenv("HTTP_REFERER"); $body .= "\n";
$body .= "HTTP-User-Agent : "; $body .= getenv("HTTP_USER_AGENT"); $body .= "\n";
$body .= "Remote-host : "; $body .= gethostbyaddr(getenv("REMOTE_ADDR")); $body .= "\n";
$body .= "Remote-Addr : "; $body .= getenv("REMOTE_ADDR"); $body .= "\n";
$body .= $MAIL_FOOTER;
$body2 = $body;

$header = mb_convert_encoding( $header2, "EUC-JP", "UTF-8");
$subject = mb_convert_encoding( "ホームページからのお問合せ", "EUC-JP", "UTF-8");
$body = mb_convert_encoding( $body2, "EUC-JP", "UTF-8");

if( mb_send_mail ($tomail, $subject, $body, $header ) ) {
}else{
$mes = "メール送信に失敗しました。";
}

// メール送信者に送信
$tomail = $EMAIL;

$header = "From: ".$frommail."\n";
$header .= "To: ".$tomail."\n";
$header .= "MIME-Version: 1.0";
$header .= 'Content-type: text/plain; charset="iso-2022-jp"';
$header2 = $header;

$body = "お問合せありがとうございます。\n";
$body .= "以下の内容で受け付けました。\n";
$body .= "\n";
$body .= "【お名前】".$namae ."\n";
$body .= "【メールアドレス】".$EMAIL."\n";
$body .= "【内容】\n".$comment."\n";
$body .= "\n";
$body .= $MAIL_FOOTER;
$body2 = $body;

$header = mb_convert_encoding( $header2, "EUC-JP", "UTF-8");
$subject = mb_convert_encoding( "お問合せありがとうございます", "EUC-JP", "UTF-8");
$body = mb_convert_encoding( $body2, "EUC-JP", "UTF-8");

if( mb_send_mail ($tomail, $subject, $body, $header ) ) {
}else{
$mes = "メール送信に失敗しました。";
}

$tpl_file = "contact3.html"; // テンプレートファイル
break;

case "CHECK": // 確認

// 入力チェック
$errmsg = "";
if( $namae == "" ) { $errmsg .= "お名前が入力されていません。<br>\n"; }
if( $EMAIL == "" ) { $errmsg .= "メールアドレスが入力されていません。<br>\n"; }
else if(!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$",$EMAIL)) {
$errmsg .= "メールアドレスに誤りがあります。<br>\n";
}
if( $comment == "" ) { $errmsg .= "内容が入力されていません。<br>\n"; }

// エラーなし
if( $errmsg == "" ){
$st->assign('namae', $namae );
$st->assign('EMAIL', $EMAIL );
$st->assign('comment', $comment );
$st->assign('comment2', nl2br($comment) );
$tpl_file = "contact2.html"; // テンプレートファイル
break;
} else {
$st->assign('errmsg', $errmsg );
}

// エラーありの場合はそのまま入力画面へ

default: // 入力画面

// 入力画面表示
$st->assign('namae', $namae );
for( $cnt=1; $cnt<=6; $cnt++ ) {
if( $contact == $cnt ) {
$key = "contact".$cnt;
$st->assign( $key, "selected" );
}
}
$st->assign('EMAIL', $EMAIL );
$st->assign('comment', $comment );
$tpl_file = "contact.html"; // テンプレートファイル
break;
}

$st->display( $tpl_file );

?>

コメント(5)

くらんさま

早々にありがとうございます!

わたしもそこだと思いまして、やってみたのですが、何故か解決しなかったのです。
"JIS"だけのパターンと、"UTF-8"だけのパターンも試してみました。

ファイル保存のときの文字コードは、UTF-8にしています。
保存の仕方がおかしいのでしょうか・・・。
くらんさま

ありがとうございます!!!

アドバイスいただいたとおり、

mb_language("japanese");
mb_internal_encoding("UTF-8");

を先頭に書き込んだところ、
すんなり解決いたしました!

文字化けも一切なくなりました!!!

本当に、本当にありがとうございます!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者PHP講座 更新情報

初心者PHP講座のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング