PHP отправляет почту с вопросительными знаками, используя utf-8

1

Использование следующего файла php для отправки почты. Но текст, который не является английским в почтовом теле, получается как???? и $ subject of the mail получают как ", ÃÂÂÃÃÃÂÂÃÃÂÂÃÃÃÂÂÃÃÃÂÂÃÃÃÃÃÂÂÃÃÃÂÂÃÃÃÃÃÃÂ

что мне нужно, чтобы проверить/добавить/изменить, чтобы исправить это?

<?php include('config.php');
header('Content-Type: text/html; charset=utf-8');

class messenger
{

    public $name;
    public $number;
    public $email;
    public $address;
    public $category;
    public $tool;

    /*----------user registration start--------------*/
    function signup()
    {

        $name = $_REQUEST['name'];
        $number = $_REQUEST['number'];
        $email = $_REQUEST['email'];
        $address = $_REQUEST['address'];
        $category = $_REQUEST['category'];
        $tool = $_REQUEST['tool'];
        $datetime = date("Y-m-d H:i:s");

        //Generate the email message:
        $to = 'someEmailAddress@gmail.com';
        $subject = "הזמנת חדשה";
        $msg = "In time: " . $datetime . "\n New Power Tool Rental: \n\n            Name: " . $name . "\r\n            Email: " . $email . "\n            Mobile Number: " . $number . "\n            Address: " . $address . "\n            Category: " . $category . "\n            Tool: " . $tool . "\n\n Regards\n " . $name . " \n " . $email;
        $headers = "From:  $email" . "\r\n";
        $headers .= "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type: text/plain; charset=UTF-8";
        $headers .= "X-Mailer: PHP/" . phpversion();

        //Send the email
        mail($to, $subject, $msg, $headers);

        //Enter data to the SQL table
        $sql = "INSERT INTO user (name, number, email, address, category, tool, dateTime)
                 VALUES ('$name', '$number', '$email', '$address', '$category', '$tool','$datetime')";

        //Check if entered to SQL and if Yes send back in json message
        $result = mysql_query($sql);
        if (!$result) {
            $message["result"] = "Problemmm";
        } else {
            $mysql_insert_id = mysql_insert_id();       //get the new ID number from sql table
            $message["id"] = $mysql_insert_id;          //add the new ID data to the response message
            $message["name"] = $_REQUEST['name'];
            $message["number"] = $_REQUEST['number'];
            $message["email"] = $_REQUEST['email'];
            $message["address"] = $_REQUEST['address'];
            $message["result"] = "successfully";
        }

        //Send back the json message
        echo json_encode($message);
        die;
    }
    /*----------user registration end--------------*/
}

?>

просто попытался сменить тему:

$subject = "הזמנת כלי להשכרה";
$encSubject = '=?UTF-8?B?'.base64_encode($subject).'?=';

теперь я получаю сообщение по почте: ú é

  • 1
    Текст, который не является английским, не обязательно должен быть utf-8, но может быть другой кодировкой символов. Вы можете посмотреть на iconv, чтобы преобразовать его в utf-8.
  • 0
    Кроме того, тип содержимого utf-8 не влияет на тему, см. Этот ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject, чтобы узнать, как кодировать тему как UTF-8
Теги:
email
utf-8

1 ответ

1

Установка заголовков недостаточно.

Оба subject (должен быть RFC 2047) и message (должно быть, UTF-8 в вашем случае) также находятся в правильной кодировке, соответствующие php :: mail doc + примечания пользователя покрывают большую часть того, что вы пропустите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню