При отправке письма с формы сайта, письмо приходит кракозябрами
Всем доброго времени суток. Возникла такая проблема, письмо приходит крокозябрами. Причем неважно на каком языке оно написано.
<?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');