Новая строка в письмах PHP, отображаемая как "\r\n"

У меня есть стандартная форма HTML:

<form>
    <input type="text" name="..." id="..." />
    ... etc
</form>

После отправки он отправляется по электронной почте с использованием следующего PHP:

<?php
    $webMaster = ...email hardcoded here...;

    $name = mysql_escape_string($_POST["name"]);
    $phone = mysql_escape_string($_POST["phone"]);
    $email = mysql_escape_string($_POST["email"]);
    $message =mysql_escape_string($_POST["message"]);

    $emailSubject = 'Contact Form Submission';

    $body = <<<EOD

Name:     $name
Email:    $email 
Phone:    $phone

Message:  

$message
EOD;

    $headers = "From: $email\r\n";
    $success = mail($webMaster, $emailSubject, $body, $headers);
    header('Location: thankyou.html');
?>

Это отправляет электронное письмо просто отлично, но любые новые строки в исходном сообщении просто выводятся как "\r\n".

Например, пользователь вводит следующее в форме:

это

является

тестовое задание.

Но то, что доставлено в электронном письме:

Это \ г \ п \ г \ Nis \ г \ п \ г \ на \ г \ п \ г \ NTest.

Я пытался использовать nl2br в нескольких местах в коде PHP, но ничего не делает трюк. Письмо отправляется в виде простого текста, поэтому <br> не будет работать в любом случае. Я хочу сохранить mysql_escape_string на данный момент, но также сохранить возврат каретки в исходном сообщении.

1 ответ

Попробуйте добавить заголовки, настройку Content-type а также MIME-Version, как:

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $email" . "\r\n";
Другие вопросы по тегам