我有一个标准的 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”。
例如,用户在表单中输入以下内容:
这个
是
一个
测试。
但是电子邮件中传递的是:
这个\r\n\r\nis\r\n\r\na\r\n\r\n测试。
我曾尝试nl2br
在 PHP 代码中的多个位置使用,但没有任何效果。电子邮件以纯文本形式发送,因此<br>
无论如何都无法正常工作。我想暂时保留mysql_escape_string
,但还要保留原始消息中的回车。