I know that has similar posts but nothing help with my problem, Trying to create a contact form with PHPMailer but when i try to send with greek characters i getting symbols, I noticed that the problem occurs only on Host , when im and i get correct Greek characters. i tried to set utf-8 but nothing, i tried with encode,decode command also always getting symbols like
Εδω ειναι ενα παÏαδειγμα -- ΧÏηστος -- myemail
above is the two files of settings.
if($_POST) { $to_Email = // Replace with recipient email address $subject = 'Message from website '.$_SERVER['SERVER_NAME']; //Subject line for emails $host = // Your SMTP server. For example, smtp.mail.yahoo.com $username = "yourmail"; //For example, your.email@yahoo.com $password = // Your password $SMTPSecure = "ssl"; // For example, ssl $port = 993; // For example, 465 //check if its an ajax request, exit if not if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { //exit script outputting json data $output = json_encode( array( 'type'=>'error', 'text' => 'Request must come from Ajax' )); die($output); } //check $_POST vars are set, exit if any missing if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"])) { $output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!')); die($output); } //Sanitize input data using PHP filter_var(). $user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING); $user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL); $user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING); $user_Message = str_replace("'", "'", $user_Message); $user_Message = str_replace("'", "'", $user_Message); //additional php validation if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error. { $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!')); die($output); } if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation { $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!')); die($output); } if(strlen($user_Message)<5) //check emtpy message { $output = json_encode(array('type'=>'error', 'text' => 'Too short message! Please enter something.')); die($output); } //proceed with PHP email. include("php/PHPMailerAutoload.php"); //you have to upload class files "class.phpmailer.php" and "class.smtp.php" $mail = new PHPMailer(); $mail->CharSet = 'UTF-8'; $mail->Encoding = 'base64'; $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->Host = $host; $mail->Username = $username; $mail->Password = $password; $mail->SMTPSecure = $SMTPSecure; $mail->Port = $port; $mail->setFrom($username); $mail->addReplyTo($user_Email); $mail->AddAddress($to_Email); $mail->Subject = $subject; $mail->Body = $user_Message. "rnn" .'Name: '.$user_Name. "rn" .'Email: '.$user_Email; $mail->WordWrap = 200; $mail->IsHTML(false); if(!$mail->send()) { $output = json_encode(array('type'=>'error', 'text' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo)); die($output); } else { $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .'! Thank you for your email')); die($output); } }
And the settings that get the email is above:
if($_POST) { $to_Email = "myemail"; //Replace with recipient email address $subject = 'Message from website '.$_SERVER['SERVER_NAME']; //Subject line for emails //check if its an ajax request, exit if not if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { //exit script outputting json data $output = json_encode( array( 'type'=>'error', 'text' => 'Request must come from Ajax' )); die($output); } //check $_POST vars are set, exit if any missing if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"])) { $output = json_encode(array('type'=>'error', 'text' => 'Input fields are empty!')); die($output); } //Sanitize input data using PHP filter_var(). $user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING); $user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL); $user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING); $user_Message = str_replace("'", "'", $user_Message); $user_Message = str_replace("'", "'", $user_Message); //additional php validation if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error. { $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!')); die($output); } if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation { $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!')); die($output); } if(strlen($user_Message)<5) //check emtpy message { $output = json_encode(array('type'=>'error', 'text' => 'Too short message! Please enter something.')); die($output); } //proceed with PHP email. $headers = 'From: '.$user_Email.'' . "rn" . 'Reply-To: '.$user_Email.'' . "rn" . 'X-Mailer: PHP/' . phpversion(); $sentMail = @mail($to_Email, $subject, $user_Message . "rnn" .'-- '.$user_Name. "rn" .'-- '.$user_Email, $headers); if(!$sentMail) { $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.')); die($output); }else{ $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .'! Thank you for your email')); die($output); } }
Advertisement
Answer
I set charset on .htaccess and worked !!