У меня есть стандартная форма 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
на данный момент, но также сохранить возврат каретки в исходном сообщении.
попробуйте добавить заголовки, настройку 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";
Других решений пока нет …