При отправке письма с формы сайта, письмо приходит кракозябрами

Всем доброго времени суток. Возникла такая проблема, письмо приходит крокозябрами. Причем неважно на каком языке оно написано.

<?php
if(isset($_POST['message'])){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $to      = '[email protected]';
    $subject = 'Сообщение';
    $headers = 'From: '. $email . "\r\n" .
    'Reply-To: '. $email . "\r\n" .
    'X-Mailer: PHP/' . phpversion();
    $status = mail($to, $subject, $message, $headers);
    if($status == TRUE){    
        $res['sendstatus'] = 'done';
        //Edit your message here
        $res['message'] = 'Сообщение успешно отправлено';
    }
    else{
        $res['message'] = 'Возникла ошибка при отправке сообщения. Отправьте пожалуйста на [email protected]';
    }
    echo json_encode($res);
}
?>

Подскажите, что надо поправить?


Ответы (1 шт):

Автор решения: Evgeniy Leonidov

Укажите в заголовке кодировку:

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

Ну и убедитесь перед этим что ваше письмо в нужной кодировке, либо принудительно его к ней приведите, например так:

$message = utf8_encode($_POST['message']);

Ну и я бы порекомендовал позаботиться о безопасности и не брать без фильтрации значения из глобальных переменных типа $_POST и проверять каждое поле.

UPDATE

Допилите форму:

<form method="post" accept-charset="UTF-8">

</form>

и попробуйте альтернативу:

$message = mb_convert_encoding($_POST['message'], 'utf-8');
→ Ссылка