2016-12-21 2 views
1

私のウェブサイトの連絡フォームでphpメーラーを使用しています。ギリシャ語でメッセージを受け取ったとき、私は連絡フォームに入力されたテキストを受け取っていません。 class.phpmailer.phpファイル行59で、エンコーディングはpublic $CharSet = 'iso-8859-1';です。私のテキストを連絡先フォームに入力したとおりに正しく表示させる方法はありますか? comonly ISO/IEC 8859-1でサポートされているPHPメーラーの言語エンコードの問題:英語のみを受け入れる

言語はhere

見つけることができます私はまた、ドイツ語、アルバニア語を試してみましたが、私も同じ問題を抱えています。私は英語を受け取ることができます。ユーザーがいくつかの言葉で別の言語を入力した場合、私は "中国語"を受け取ります。

enter image description here

私はこのメッセージを得る: enter image description here

コード:あなたの出力例では

 <?php 
     require_once('phpmailer/class.phpmailer.php'); 

     // if(isset($_POST['g-recaptcha-response'])){ 
     if (empty($_POST['Email'])) { 
      $_POST['Email'] = "-"; 
     } 
     if (empty($_POST['Name'])) { 
      $_POST['Name'] = "-"; 
     } 
     if (empty($_POST['Subject'])) { 
      $_POST['Subject'] = " "; 
     } 
     if (empty($_POST['message'])) { 
      $_POST['message'] = "-"; 
     } 




     $mymail = smtpmailer("[email protected]", $_POST['Email'], $_POST['Name'], 
$_POST['Subject'], $_POST['message']); 
     function smtpmailer($to, $from, $from_name, $subject, $body) 
     { 
      $mail = new PHPMailer; 
      $mail->isSMTP(); 
      $mail->Debugoutput = 'html'; 
      $mail->Host  = 'smtp.gmail.com'; 
      $mail->Port  = 587; 
      $mail->SMTPSecure = 'tls'; 
      $mail->SMTPAuth = true; 
      $mail->Username = '[email protected]'; 
      $mail->Password = 'pass'; 
      $mail->SetFrom($from, $from_name); 
      $mail->Subject = " Contact form ~Name: $from_name ~ subject: $subject "; 
     $mail->Body = " You have received a new message 
      from $from_name, here are the details:\n\n_____ 
      ___________________\n" . "\nDear $from_name,\n 
     Your enquiry had been received on " . date("D j F ") . " 
     \nINFORMATION SUBMITTED: " . "\n\nName: $from_name\n\nEmail: $from 
     \nSubject: $subject\n\nMessage: $body \n\nTo: 
     $to\nDate: " . date("d/m/y") . "\nWebsite: " . "\n____________ 
     __________________"; //end body 


     $mail->AddAddress($to); 
     //send the message, check for errors 
     if (!$mail->send()) { 
      echo "Mailer Error: " . $mail->ErrorInfo; 

     } else { 
     echo "Well done $from_name, your message has been sent!\n 
    We will reply to the following email: $from" . "\nYour Message: $body"; 
      } 




     } //end function smtpmailer 
     //} 


     ?> 
+0

ギリシャ文字はiso-8859-1に含まれていますか?あなたがUTF8を試してみたら? – Pipe

+0

これらはサポートされている言語です:https://en.wikipedia.org/wiki/ISO/IEC_8859-1#Modern_languages_with_complete_coverageギリシャ語のlangはサポートされていません – csandreas1

+0

phpでiconv()関数を試しましたか? –

答えて

3

を、文字カウント増幅は、あなたが」ことを示唆していますあなたのフォームからUTFでデータを受け取っています-8になりますが、PHPMailerに(デフォルトで)ISO-8859-1であることを伝えています。その結果、あなたが見ているような破損が生じます。

どこでもUTF-8を使用する必要があります。 phpmailerのでは、このようにそれを行う:次に、あなたの処理のすべてのステップが同様にUTF-8をサポートしていることを確認する必要があり

$mail->CharSet = 'UTF-8'; 

+0

私がこれをチェックすべきであるphp-mailerのファイルは何ですか? – csandreas1

+0

PHPMailerのファイルに触れる必要はありません。他のPHPMailerのプロパティを設定している同じ場所に、自分のスクリプトにその行を追加するだけです。 – Synchro

+0

また、私はPHPMailerの旧バージョン(最新版を入手する)(https://github.com/PHPMailer/PHPMailer)を使用しているか、作曲家の使い方を学んでいると言えます。 – Synchro

関連する問題