-1

我有一个标准的 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,但还要保留原始消息中的回车。

4

1 回答 1

1

尝试添加标题,设置Content-typeMIME-Version,如:

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $email" . "\r\n";
于 2015-02-02T04:26:36.727 回答