【发布时间】:2015-04-01 00:08:10
【问题描述】:
我有一个标准的 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测试。
我尝试在 PHP 代码的多个位置使用nl2br,但没有任何效果。电子邮件以纯文本形式发送,因此<br> 无论如何都不起作用。我想暂时保留mysql_escape_string,但也要保留原始消息中的回车。
【问题讨论】:
-
mysql_escape_string这来自mysql_*API 并用于mysql_*API,而不是用于邮件功能
标签: php email nl2br mysql-escape-string