• 締切済み

PHPフォームからのメール送信内容の一部が文字化けしています

こんにちは。PHP初心者の者です。 大変困っているのですが、PHPで作成したエントリーフォームより送信ボタンを押下すると、入力データがメールに届く機能を作成したのですが、 本文の一部分が文字化けしてしまいます。   正しい → 月給25万円   誤り  → 月・u梛・5万円 など 原因が全く分かりません。 お分かりになる方、助けてください。。。 ちなみに文字コードなどの設定ですが、 mb_language("Japanese"); mb_internal_encoding("Shift_JIS"); $body = mb_convert_encoding($body, "JIS");      ・・・ mb_send_mail($email_to,$email_sub,$body,$header) という感じです。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

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

うーん、なんでしょうね? 私の環境ではとりあえず問題なさそうですが・・・ mb_internal_encoding("Shift_JIS"); を mb_internal_encoding("SJIS"); にして、 $body = mb_convert_encoding($body, "JIS","SJIS"); としてみるとか・・・ (あんまり期待できないですが)

k-tame
質問者

お礼

yambejpさん、早い回答、本当にありがとうございます。 上記の「Shift-JIS」→「SJIS」に変更もやってみましたが。。。 変わらずでした。。。(T_T) yamabejpさんの環境で出来るということは、 私の方のメールサーバ?メールブラウザ?環境が影響を及ぼしているのですかね。 もう少し、調べてみます!!

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

mb_send_mail()ではなくmail()コマンドをつかってみては?

k-tame
質問者

お礼

yambejpさん回答のほう、ありがとうございます。 mail()に直して試してみたのですが。。。 やっぱり変わらず、本文の一部分が文字化けをしてしまいます。 文字コードの設定が悪いのでしょうか???

関連するQ&A

  • メールフォームが部分的に文字化けする

    お問い合わせメールフォームを作りました。 一部のお客様からのメールが部分的に文字化けします。 ========== E月E6日に宿泊させてぁEだきました� そE際E対応でどぁEても納得できなかった為メールしました� ========== メールフォーム自体は UTF-8 でエンコードしていて、メール送信の際に JIS にしています。 ========== <?php mb_language("Japanese"); mb_internal_encoding("utf-8"); [snip] $from_name = mb_convert_encoding($from_name, "JIS", "UTF-8"); $from_name = '=?ISO-2022-JP?B?'.base64_encode($from_name).'?='; $body = mb_convert_encoding($body, "JIS", "UTF-8"); [snip] $mail_true = @mb_send_mail($mailto, $subject, $body, $additional_headers); [snip]

    • ベストアンサー
    • PHP
  • phpのmb_send_mailで携帯のみ文字化け

    PHPのmb_send_mail関数でメールを送信しています。 メールサーバーはGoogleAppsのを使っています PHPのバージョンは5.1.6 --- 下記ソース --- //日本語と内部文字エンコードの指定 mb_language('ja'); mb_internal_encoding('UTF-8'); $parameter = "-f hoge@example.co.jp";//return_path設定 // ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け //$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $header = ""; $header .= "From: {$subject}<{$from}>"; $message = str_replace("\r", "", $message); $res = mb_send_mail($to, $subject, $message, $header, $parameter);

    • ベストアンサー
    • PHP
  • 自作メールフォームから送信するとメール内容がおかしくなる。

    ※PHP初心者なので、お手柔らかにお願いします。 自作メールフォームからメール送信すると、メールは送れるのですがメールの内容がおかしくなります。 現状は、件名のみ正しく表示され、差出人と本文の内容が空になります。 いろいろなサイトを見て試してみたのですが、どれも同じ結果で何が間違っているのかよくわからず困ってます。 メールの設定として下記を、 mb_language("Japanese"); mb_internal_encoding ("SJIS"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $MailTo = "送付先メールアドレス"; メール送信事態は下記ソースの通りです。 // エンコードして文字列を作成 $Name = mb_convert_encoding($Name, 'JIS', 'auto'); $Header = "From:" .mb_encode_mimeheader($Name). "<" .$Mail. ">\n"; $Subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding("お問い合わせ", 'JIS', 'auto')). "?="; $Message = mb_convert_encoding($Message, "JIS", "auto"); // メール送信処理 $Ret = mb_send_mail($MailTo, $Subject, $Message, $Header);

    • ベストアンサー
    • PHP
  • メールフォームの件名が文字化けします

    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 } ?>

    • ベストアンサー
    • PHP
  • PHP関数mb_send_mailで送信すると件名が文字化けしてしまいます。

    PHP関数mb_send_mailでメールの送信しているのですが、件名だけが文字化けしてしまいます。 Windows2000Server+IIS ■PHPソース mb_send_mail($strMail,mb_convert_encoding("あいうえお","JIS","auto"),mb_convert_encoding("かきくけこ","JIS","auto"),$header); ■PHP.INI設定 extension=php_mbstring.dll SMTP = localhost smtp_port = 25 sendmail_from = sample@sample.jp mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; ■文字化けするSubject Subject: =?US-ASCII?B?GyRCJCIkJCQmJCgkKhsoQg==?= このPHPソースを別のレンタルサーバにいれ、送信すると文字化けせずに届きます。 なぜか、受信メールの文字コードがUS-ASCIIになっています。どうすればいいのでしょう? 誰かたすけてくださいーー

  • PHPメールフォームでの文字化けに苦しんでいます。

    レンタルサーバー(ファーストサーバ)でPHPのメールフォームを作っています。 PHPフォームから出力される送信確認画面と、送られるメールで特定の文字が (例えば「契」が「啓」に)化けてしまいます。 色々調べて出来る対策はしたのですが一向に分かりません。 どうやれば文字化けが直るか具体的に教えてください。 文字化け対策用に.htaccessをディレクトリに入れています。 .htaccessの中身 php_flag mbstring.encoding_translation off php_value default_charset "Shift_JIS" PHPフォームのメイン処理部分です。 <?php header("Content-Type: text/html;charset=Shift_JIS"); ~~~省略~~~ $body=mb_convert_encoding($body,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS"); $subject="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($resubject,"Shift_JIS","ASCII.JIS,UTF-8,EUC-JP,SJIS"))."?="; if($from_add == 1) { $from = $_POST['E-mail']; $header="From: $from\nReply-To: ".$_POST['E-mail']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } else { $header="Reply-To: ".$_POST['E-mail']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); } mail($mailto,$subject,$body,$header); else { htmlHeader(); ?> <!-- 送信確認 --> 間違いがなければ送信ボタンを押してください。<br><br> <form action="form.php" method="POST"> <? echo $err_message; ?> <table width="500" bgcolor="#cccccc" cellspacing="1" cellpadding="3"> <?php foreach($_POST as $key=>$var) { if(get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); print("<tr bgcolor=#ffffff><td bgcolor=#eeeeee width="."125"." ><small><div style = line-height:0.5>".$key."</small></td><td><small>".$var); ?> <input type="hidden" name="<?= $key ?>" value="<?= $var ?>"> <?php print("</div></small></td></tr>\n");}?> ~~~後処理省略~~~ よろしくお願いします。

    • 締切済み
    • 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
  • mail()でメール送信で、特定のメーラーの受信のみ件名が文字化け

    PHPでメール配信プログラムを作っております。 配信テストを行なったのですが、特定のメーラーで件名が文字化けしてしまう現象に見舞われしてしまい、対処法を探しております。 ■テストメーラー 1、OutlookExpress 2、EdMax 3、Thunderbird ■ソース(一部抜粋) mb_language('Japanese'); mb_internal_encoding("SJIS"); //1 $subject = mb_encode_mimeheader($subject); //2 $subject = mb_convert_encoding($subject,"JIS","SJIS"); $send_body = mb_convert_encoding($send_body,"JIS","SJIS"); $header = "From: $fronmail.\n"; $header .= "Return-path: $return\n"; $header .= "Reply-To: $fronmail.\n"; //3 $header .= "Subject: $subject\n"; $header .= "Message-ID: {$MessageID}\n"; $header .= "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; //4 $header .= "Content-Transfer-Encoding: base64\n"; $header .= "X-Mailer:PHP/".phpversion(); $chk_mail = mail($to_email,$subject,$send_body,$header); ■設定値 $body = $subject = "日本語テスト"; メールアドレスはプロバイダなどが発行しているもの ■現象 ソースのままだと1、2は件名は文字化けせず、3は文字化け(???{????? ※?はひし形に囲まれた?です)します。 それぞれコメントアウトを外したり切り替えたりするのですが、1、2も件名が文字化けになったりします。 3は基本的にどのコメントアウトを有効にしても文字化けのままです。 $subjectに関しては、mail関数のものが優先のようでして、試しに空にしてみたのですが、件名も空のままでした。 何故この形式を取っているかというと、半角カナを使いたいが為でして、mb_send_mailだと半角カナが使えなかったような気がしてmailを使っております。 あと、popenで直接コマンドを打つという手もありそうですが、sendmailではなくpostfixなのですがpostfixでコマンドをという手段を探した方が良いのでしょうか? 出来ればmailを使って文字化けもしない方向を希望なのですが、それが駄目なら他の手段など誘導していただければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • mb_send_mailでの文字化け

    PHPでメールフォームの設置中ですが、OutlookEXで受け取ったメール本文の一部が ?絅螢謄・κ(中略)? と,クエスチョンマークをはさんだ文字に化けてしまいました。 文字コードはEUCに統一し、 mb_internal_encoding("EUC"); mb_language("Japanese"); $from_name2 = i18n_mime_header_encode( i18n_convert($from_name, "JIS") ); を入れて、その後に、mb_send_mail();しています。 なにか解決のヒントがありませんでしょうか。 また、この文字化けしてしまった文字を復活する方法はないでしょうか。

    • 締切済み
    • PHP
  • PHPのsendmailでの文字化けについて

    PHPのsendmailでの文字化けについて PHPのsendmailをしています。 ソースの概略は以下のような感じです。 mb_language("Japanese"); mb_internal_encoding("SHIFT-JIS"); mb_send_mail($to, $subject, $body, $header); 質問1 (1)とか(株)などの特殊文字を送信すると?に変換されます。 それは良いのですが、PHPのsendmailによるメール送信の 定石としては、そのまま送信して?に変換されるのが良いのでしょうか? それとも、何かの文字に変換して送信する。だとか 送信前にチェックして、警告を出すべきなのでしょうか? 出来れば方法論とソースも教えて頂きたく存じます。 質問2 全角で493文字以上の本文を送信すると、493文字以降が 文字化けしてしまいます。何か文字数制限みたいなものがあるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう