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

У меня есть стандартная форма 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";
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]