メール送信での文字化けとは?

このQ&Aのポイント
  • ホームページから入力ホームに記入してもらい、送信するとphpを使用してメールを送信するプログラムを書いていますが、メールを送信するとメールの内容に文字化けが発生してしまいます。
  • 入力ホームのページからutf-8で統一すれば文字化けなくメールを送信することができましたが、仕様の条件としてshift-jisにするとありますので、入力ホームはshift-jisにしてあります。
  • どうすればよいでしょうか?どうか教授ください。
回答を見る
  • ベストアンサー

メール送信での文字化け

お世話になります。 ホームページから入力ホームに記入してもらい、送信するとphpを使用してメールを送信するプログラムを書いていますが、メールを送信するとメールの内容に文字化けが発生してしまいます。 どうすればよいでしょうか? 入力ホームのページからutf-8で統一すれば文字化けなくメールを送信することができましたが、 仕様の条件としてshift-jisにするとありますので、入力ホームはshift-jisにしてあります。 どうか教授ください。 <?php mb_language('ja'); mb_internal_encoding('SJIS'); session_start(); require_once("includes/common.php"); if(!isset($_SESSION["name"]) && !isset($_SESSION["tel"]) && !isset($_SESSION["email"]) && !isset($_SESSION["ren"])){ header("Location: contact.php"); } else{ $name=$_SESSION["name"]; $furi=$_SESSION["furi"]; $tel=$_SESSION["tel"]; $email=$_SESSION["email"]; $ren=$_SESSION["ren"]; $ktel=$_SESSION["ktel"]; $fax=$_SESSION["fax"]; $iken=$_SESSION["iken"]; $to=$email; $subject="こんにちは"; $to_admin="aaaa@bbbbb"; $subject_admin="ccccc@dddddd"; $from= "From: ".mb_encode_mimeheader("AAAAAA")."<>"; $message=<<<MESSAGE。 Eメールアドレス:{$email} お名前:{$name} 様 フリガナ:{$furi}様 電話番号:{$tel} 携帯電話番号:{$ktel} FAX番号:{$fax} 連絡方法:{$ren} <ご意見、ご要望> {$iken} MESSAGE; $message.=<<<MESSAGE MESSAGE; mb_send_mail($to,$subject,$message,$from); mb_send_mail($to_admin,$subject_admin,$message_admin,$from); session_unset(); } ?>

  • PHP
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まず日本語のエンコードを気にするならmb_send_mail()は使わない方がいいですね エンコードの指定は多少面倒ですが自前でエンコードして mail()か、PEAR::Mailを利用するといいでしょう http://www.php.net/manual/ja/function.mail.php http://pear.php.net/manual/ja/package.mail.mail.php メール本文は7ビットJISに変換してから送るのが基本です その他のエンコードの場合、メールヘッダでContent-Transfer-Encodingを 指定してやると精度があがるとおもいますよ

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

ANo.2です。 >$messageのうち、全部が化けています。 ファイルに落としたときにはどうなっていますか?あるいは画面に表示させてブラウザのエンコードをShift_JISにして確認してもいいです。 $messageの中身がShift_JISで、マルチバイト系の設定 mb_language('ja'); mb_internal_encoding('SJIS'); をこれ以降変えていない(requireしたスクリプトでも触っていない)ということであれば、mb_send_mailの問題ですが、そもそも$messageの中身がShift_JISになっていないのであればmb_send_mail以前の問題です。 まずはそれを切り分けてください。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

基本的には mb_language('ja'); mb_internal_encoding('SJIS'); があるので、化ける可能性は低いハズですけどね(phpスクリプトは間違いなくShift_JISですよね)。$messageのうち、どの部分が化けていますか。それとも全部ですか。$messageの内容をファイルに書き出して「Shift_JIS」になっていることを確認してください。 #なお$message_adminの中身は推測できません。また$fromの内容は #転記するときに書き替えたんですよね(このままだとは思えないので)。

elkheart
質問者

補足

回答ありがとうございます。 phpスクリプトは間違いなくShift_JISになっています。 $messageのうち、全部が化けています。 fromの内容は転記するときに書き替えてます。 よろしくお願いいたします。

関連するQ&A

  • phpのフォームで携帯に送ると文字化け

    お世話になります。 PCサイトのフォームから情報を入れて携帯にメールを飛ばすphpを作成しています。 フォームからPCやスマホにメールを飛ばすときは問題なく表示されるのですが、 フォームから携帯(ガラゲー)に飛ばすと文字化けします。 それも件名だけです。 どうすれば文字化けなく表示させることができるでしょうか? 教えてください。 <?php mb_language('ja'); mb_internal_encoding('SJIS'); session_start(); $name=$_SESSION["name"]; $furi=$_SESSION["furi"]; $tel=$_SESSION["tel"]; $email=$_SESSION["email"]; $ren=$_SESSION["ren"]; $ktel=$_SESSION["ktel"]; $fax=$_SESSION["fax"]; $iken=$_SESSION["iken"]; $to=$email; $subject="こんにちは"; $from= "From: "AAAAAA"; $message=<<<MESSAGE Eメールアドレス:{$email} お名前:{$name} 様 フリガナ:{$furi}様 電話番号:{$tel} 携帯電話番号:{$ktel} FAX番号:{$fax} 連絡方法:{$ren} <ご意見、ご要望> {$iken} MESSAGE; $message.=<<<MESSAGE MESSAGE; mail($to , $subject , $message,$from); session_unset(); ?>

    • 締切済み
    • PHP
  • メールフォームから送信すると文字化けします^^;

    海外のHPのテンプレサイトにてダウンロードしたテンプレート内のメールフォームで送信すると文字化けしてしまいます^^; 下記がsendmail.php内の中身なのですが、何が足りないでしょうか?^^; ご教授よろしくお願いします。 http://www.premiumfreebies.eu/previews/ProFolio/ <? //This php file receives the post vars of the contact page and sends it to a email address //Settings $email = 'メールアドレス'; $subject = '[NAME] HP form mail '; $name = $_POST['name']; $from = $_POST['email']; $message = $_POST['message']; mb_language("ja"); mb_internal_encoding("UTF-8"); //Set the headers and send the mail $subject = str_replace('[NAME]', $name, $subject); $headers = 'From: '.$name.' <'.$from.'>'; mail($email, $subject, $message, $headers); ?>

    • ベストアンサー
    • PHP
  • メール文書の文字化けに困っています。

    下記のPHPを使ったメールフォームを作成しました。 送信は問題無く行うことができるのですが、送信先に受信されたメール文書について日本語が文字化けしてしまいます。 下記のソースをご覧頂き、原因がおわかりの方がおりましたらご教授頂けますと誠に幸いです。 宜しくお願いいたします。 <?php //create short variable names $name=utf8_decode($HTTP_POST_VARS['name']); $email=utf8_decode($HTTP_POST_VARS['email']); $subject=utf8_decode($HTTP_POST_VARS['subject']); $message=utf8_decode($HTTP_POST_VARS['message']); $name=trim($name); $email=trim($email); $subject=StripSlashes($subject); $message=StripSlashes($message); //modify the next line with your own email address $toaddress='test@test.domain'; mail($toaddress,$subject,$message,"From: $name <$email>"); //clear the variables $name=''; $email=''; $subject=''; $message=''; echo "response=passed"; ?>

    • 締切済み
    • PHP
  • phpで作成した携帯サイトのメールフォームがPCからは正常に送信されるのに、携帯から送信すると届きません。

    ソースindex <form action="kakunin.php" method="POST" > お名前 <input name="name" id="name" type="text"> フリガナ<input name="furi" id="furi" type="text"> ご住所<input name="add" id="add" type="text"> TEL<input name="tel" id="tel" type="text"> FAX<input type="text" name="fax"> E-MAIL <input name="mail" id="mail" size="30" type="text"> お勤め先名 <input name="k_name" id="k_name" type="text"> 勤続年数<input type="text" name="nensu"> 年収<input type="text" name="nenshu"> ご要望、ご質問等<textarea rows="5" cols="10" name="yobo"></textarea> <input type="submit" value="送信する"> </form> ---------------確認画面----------------------- <?php $name =$_POST[name]; $furi =$_POST[furi]; $add =$_POST[add]; $tel =$_POST[tel]; $fax =$_POST[fax]; $mail =$_POST[mail]; $k_name =$_POST[k_name]; $nensu =$_POST[nensu]; $nenshu =$_POST[nenshu]; $yobo =$_POST[yobo]; if($name == ""){ $err_massage .= "お名前を入力してください。"; } if($furi == ""){ $err_massage .= "フリガナを入力してください。"; } if($tel == ""){ $err_massage .= "TELを入力してください。"; } if($mail == ""){ $err_massage .= "E-MAILを入力してください。<br />"; }else{ if(ereg("([0-9a-zA-Z._-]{1,})@([0-9a-zA-Z.-_]{1,})",$mail)){ }else{ $err_massage .= "E-MAILを正しく入力してください。"; } } if($err_massage != ""){ print <<<ERR $err_massage <a href="index.html">戻る</a> ERR; }else{ print <<<FORM <form action="sosin.php" method="post"> お名前 $name フリガナ $furi ご住所 $add TEL(携帯可) $tel FAX $fax E-MAIL $mail お勤め先名 $k_name 勤続年数 $nensu 年収 $nenshu ご要望、ご質問等 $yobo <input name="name" value="$name" type="hidden"> <input name="furi" value="$furi" type="hidden"> <input name="add" value="$add" type="hidden"> <input name="tel" value="$tel" type="hidden"> <input name="fax" value="$fax" type="hidden"> <input name="mail" value="$mail" type="hidden"> <input name="k_name" value="$k_name" type="hidden"> <input name="nensu" value="$nensu" type="hidden"> <input name="nenshu" value="$nenshu" type="hidden"> <input name="yobo" value="$yobo" type="hidden"> <input type="submit" value="送信する"> </form> FORM; } ?> -送信画面- <?php $name =$_POST[name]; $furi =$_POST[furi]; $add =$_POST[add]; $tel =$_POST[tel]; $fax =$_POST[fax]; $mail =$_POST[mail]; $k_name =$_POST[k_name]; $nensu =$_POST[nensu]; $nenshu =$_POST[nenshu]; $yobo =$_POST[yobo]; mb_language("Ja") ; mb_internal_encoding("shift-JIS") ; $from_mail = '送信メールアドレス'; $msg = "【タイトル】 "."お名前:"."$name"." フリガナ:"."$furi"." 住所:"."$add"." TEL:"."$tel"." FAX:"."$fax"." E-MAIL:"."$mail"." お勤め先名:"."$k_name"." 種類:"."$shurui"." 勤続年数:"."$nensu"." 年収:"."$nenshu"." お問合せ内容:"."$naiyo_out"." ご要望・ご質問等他:"."$yobo"; $sb = "【タイトル】"; $rcd = mb_send_mail($from_mail, $sb, $msg, "From:$mail"); ?>

    • 締切済み
    • PHP
  • メール送信で文字化け

    メール送信で件名が文字化けしてしまいます。 カテゴリ内には同様の質問もあるようですが、 解決できないので、投稿しました。 以下のようなコードです。 $to= "aa@aa.aa"; $from= "bb@bb.bb"; $subject= "メール送信テスト"; $headers= "From:$from"; $subject = i18n_mime_header_encode(i18n_convert($subject, "JIS")); $name= $_POST["name"]; $sub= $_POST["sub"]; $body= $_POST["body"]; $message="$name \n $sub \n $body \n"; if(mail($to, $subject, $message,$headers)){ echo "送信完了"; }else{ echo "送信エラー"; } ちなみに、 $subject= base64_encode($subject); とかもやってみたけど駄目でした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • メール送信フォーム

    mb_send_mail($to, $subject, $message, $from); でフォームのメール送信を作ったのですが、(エラーはでません)メールが送信されません。PHPのバージョンは4.23 HTMLでは <FORM METHOD="POST" ACTION="send.php" ENCTYPE="text/plain"> <input type="hidden" name="subject" value="質問"> </FORM> 省略 send.phpでは <?php mb_language("ja"); mb_send_mail($mail, $subject, $message, $from); ?> どこがおかしいのかわかりません? なにかヒントをいただけますか?

    • 締切済み
    • PHP
  • メールの文字化け

    define( 'CNST_MAIL_REPLY' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_ADDR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_ERROR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_NAME' , 'ここが、差出人で、日本語表示したいんですが文字化け' ); define( 'CNST_MAIL_TO_ADDR' , 'aaa@aaa.co.jp' ); //* メールアドレス設定 *// $mail_header = ""; if ( CNST_MAIL_REPLY != "") { if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= "Reply-To: ".CNST_MAIL_REPLY; } $from = "From: "; if ( CNST_MAIL_FROM_NAME != "") { $from .= "\"".CNST_MAIL_FROM_NAME."\""; } if ( CNST_MAIL_FROM_ADDR != "") { $from .= " <".CNST_MAIL_FROM_ADDR.">"; } if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $from; if( CNST_MAIL_ERROR != "") { $errors_to = "Errors-To: "; $errors_to .= CNST_MAIL_ERROR; if( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $errors_to; $sub_parm = "-f".CNST_MAIL_ERROR; $mail_subject = mb_convert_encoding($mail_subject, "ISO-2022-JP","SJIS"); $mail_text = mb_convert_encoding($mail_text, "ISO-2022-JP","SJIS"); $mail_header = mb_convert_encoding($mail_header,"ISO-2022-JP","SJIS"); // メール送信処理 mb_language("Japanese"); mb_send_mail($to, $mail_subject, $mail_text, $mail_header, $sub_parm); 上のメール送信プログラムなんですが、 差出人の名前が文字化けしてしまいます。 質問のしかたがよくわからなかったのでプログラムをのせました。 アドバイス宜しくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mail で一部文字化けします

    mb_send_mail で一部文字化けします。 URLやキーワードとかそういった文字をいれた変数です。 基本UTF8で作ってます。 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $subject = "てすと"; $to =$email; $header .= "From:admin@example.jp\n"; $header .= "Return-Path:admin@example.jp\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= "◆URL:"; $body .= $url[$count]; mb_send_mail($to,$subject,$body,$header);

    • 締切済み
    • PHP
  • メール送信時の文字化けについて

    お世話になります。 PHPでメール送信のフォームを作っているのですが 何故か、「あ」や「ア」が入力されると 文字化けされてしまいます。 $address = $_POST['address']; //送信先 $name = $_POST['name']; $mail = $_POST['mail']; //相手先 $title = $_POST['title'];   //タイトル $message = $_POST['message']; //本文 mb_language("Japanese"); mb_internal_encoding("JIS"); mb_send_mail($address, $title, $message, "From:$mail", "-f$mail") ソースはこんな感じですが何か根本的な問題とかが あるのでしょうか? 初心者みたいな質問で申し訳ありません。

    • 締切済み
    • PHP
  • メールの内容が文字化けします・・・

    <? function sendmail($to,$from,$from_name,$title,$message){ /* EUCコードへのエンコーディング */ $to = mb_convert_encoding($to , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $from = mb_convert_encoding($from , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $title = mb_convert_encoding($title , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); $message = mb_convert_encoding($message , "EUC-JP","EUC-JP,UTF-8,SHIFT-JIS,ASCII,JIS"); /* 改行コード変換(CR+LFへ変換) */ $to = ereg_replace("\r", "", $to); $to = ereg_replace("\n", "\r\n", $to); $from = ereg_replace("\r", "", $from); $from = ereg_replace("\n", "\r\n", $from); $from_name = ereg_replace("\r", "", $from_name); $from_name = ereg_replace("\n", "\r\n", $from_name); $title = ereg_replace("\r", "", $title); $title = ereg_replace("\n", "\r\n", $title); $message = ereg_replace("\r", "", $message); $message = ereg_replace("\n", "\r\n", $message); /* メールヘッダ生成 */ $header = "From: ".$from_name." <".$from.">\n"; $header .= "Reply-To: ".$from_name." <".$from.">\n"; /* メール本文生成 */ $message = mb_convert_kana($message,"KV"); /* 送信メッセージ言語設定 */ mb_language("Japanese"); /* メール送信処理 */ $rcd = mb_send_mail($to,$title,$message,$header); return $rcd; } ?> 何が原因か分からないのです・・・。 教えていただければ嬉しいですm(__)m

    • ベストアンサー
    • PHP