どうしてもフォームメールが文字化けします。 - PHPプロ!Q&A掲示板

4963

  • 0P

どうしてもフォームメールが文字化けします。

質問日時 / 2018年7月14日 16:30    回答数 / 1件

Questioner:  saizou  このエントリーをはてなブックマークに追加 

キーワード / フォーム    PHP    文字化け   

以下のPHPスクリプトでフォームメールを送っているのですが、
受取側でどうしても文字化けしてしまいます。
どうか教えて下さい。

  1. <?php
  2.  
  3. header("Content-type: text/html; charset=UTF-8");
  4. mb_language("Japanese");
  5. mb_internal_encoding("UTF-8");
  6.   
  7.   $to = '△@〇□';  // please change this email id
  8.   
  9.   $errors = array();
  10.   // print_r($_POST);
  11.  
  12.   // Check if name has been entered
  13.   if (!isset($_POST['name'])) {
  14.     $errors['name'] = 'お名前を記入してください。';
  15.   }
  16.   
  17.   // Check if email has been entered and is valid
  18.   if (!isset($_POST['email']) || !filter_var($_POST['email']FILTER_VALIDATE_EMAIL)) {
  19.     $errors['email'] = 'メールアドレスを記入してください。';
  20.   }
  21.   
  22.   //Check if message has been entered
  23.   if (!isset($_POST['message'])) {
  24.     $errors['message'] = '問い合わせ内容を記入してください。';
  25.   }
  26.  
  27.   $errorOutput = '';
  28.  
  29.   if(!empty($errors)){
  30.  
  31.     $errorOutput .= '<div class="alert alert-danger alert-dismissible" role="alert">';
  32.      $errorOutput .= '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
  33.  
  34.     $errorOutput  .= '<ul>';
  35.  
  36.     foreach ($errors as $key => $value) {
  37.       $errorOutput .= '<li>'.$value.'</li>';
  38.     }
  39.  
  40.     $errorOutput .= '</ul>';
  41.     $errorOutput .= '</div>';
  42.  
  43.     echo $errorOutput;
  44.     die();
  45.   }
  46.  
  47.  
  48.  
  49.   $name = $_POST['name'];
  50.   $email = $_POST['email'];
  51.   $message = $_POST['message'];
  52.   $from = $email;
  53.   $subject = 'お問合せ';
  54.   
  55.   $body = "From: $name\n E-Mail: $email\n Message:\n $message";
  56.  
  57.  
  58.   //send the email
  59.   $result = '';
  60.   if (mail ($to$subject$body)) {
  61.     $result .= '<div class="alert alert-success alert-dismissible" role="alert">';
  62.      $result .= '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
  63.     $result .= 'お問合せありがとうございます。後ほどメールで回答差し上げますので今しばらくお待ちください。';
  64.     $result .= '</div>';
  65.  
  66.     echo $result;
  67.     die();
  68.   }
  69.  
  70.   $result = '';
  71.   $result .= '<div class="alert alert-danger alert-dismissible" role="alert">';
  72.   $result .= '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
  73.   $result .= 'メッセージが送信できませんでした。後ほど再度お試し下さい。';
  74.   $result .= '</div>';
  75.  
  76.   echo $result;
  77.   die();
  78.  
  79.  
  80. ?>


サーバー側のPHPの文字コード設定は
mbstring.language Japanese
mbstring.internal_encoding UTF-8
mbstring.http_input pass
mbstring.http_output pass
mbstring.encoding_translation Off 
mbstring.detect_order auto
mbstring.substitute_character none


です。
調べて色々試しましたがお手上げです。どうかご教授お願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>>CODE if (mail ($to, $subject, $body)) { <<CO

回答一覧

並び替え:

A01
answerershimix [7月15日 06:13]

  1. if (mail ($to, $subject, $body)) {
mail()がmb_send_mail()のaliasになっている環境なんでしょうか?そうでなければ、日本語を扱うメールであればmb_send_mail()を使うべきでは?

http://php.net/manual/ja/function.mb-send-mail.php

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)