Кодирование PHP для отправки почты в другие языки - PullRequest
0 голосов
/ 27 января 2012

Я хочу закодировать форму отправки php на моем языке. Что не так с кодом? В конце я добавил тип содержимого в заголовки $ ... Это не весь файл, есть также HTML после PHP, но я не позволил опубликовать его

<?php
if(isset($_POST['email'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "gancho_lambev@abv.bg";
    $email_subject = "Contact Form...";


    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form your submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form your submitted.');      
    }

    $name = $_POST['name']; // required
    $email_from = $_POST['email']; // required
    $comments = $_POST['comments']; // required




    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }

    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Comments: ".clean_string($comments)."\n";


// create email headers
$headers .= 'Content-type: text/plain; charset=windows-1251' . "\r\n";
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  ;}
?>

Ответы [ 3 ]

1 голос
/ 27 января 2012

Для отправки почты на другом языке вы можете просто изменить кодировку:


$headers .= 'Content-type: text/plain; charset=UTF-8' . "\r\n";
$headers .= 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();

И убедитесь, что страница закодирована как UTF-8 и что, если используется база данных, таблица (или целоеdb) находится в «UTF-8 Unicode General»

С UTF-8 вы можете писать символы, как они появляются, не используйте сущности.

Вы имеете в виду что-то подобное.Надеюсь, это поможет

0 голосов
/ 27 января 2012

Попробуйте следующее:

Установите параметры сортировки вашей базы данных / таблиц / строк в UTF-8. UTF8_general_ci должен сделать. Установите соединение между MySQL и PHP на UTF-8. (Выполнив запрос SET NAMES 'utf8' после подключения или установив кодировку подключения по умолчанию). Попробуйте отправить заголовок типа контента с помощью PHP: header("Content-Type: text/html; charset=utf-8");.

0 голосов
/ 27 января 2012

Попробуйте использовать стороннюю библиотеку, например, phpmailer:

Пример: http://phpmailer.worxware.com/index.php?pg=exampleamail Загрузить: http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/

Не забудьте установить кодировку следующим образом:

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

$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
$mail->CharSet = 'utf-8';

try {
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->AddAddress('whoto@otherdomain.com', 'John Doe');
  $mail->SetFrom('name@yourdomain.com', 'First Last');
  $mail->AddReplyTo('name@yourdomain.com', 'First Last');
  $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
  $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
  $mail->MsgHTML(file_get_contents('contents.html'));
  $mail->AddAttachment('images/phpmailer.gif');      // attachment
  $mail->AddAttachment('images/phpmailer_mini.gif'); // attachment
  $mail->Send();
  echo "Message Sent OK\n";
} catch (phpmailerException $e) {
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...