【问题标题】:New line in PHP emails displaying as "\r\n"PHP 电子邮件中的新行显示为“\r\n”
【发布时间】: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,但没有任何效果。电子邮件以纯文本形式发送,因此&lt;br&gt; 无论如何都不起作用。我想暂时保留mysql_escape_string,但也要保留原始消息中的回车。

【问题讨论】:

  • mysql_escape_string 这来自mysql_* API 并用于mysql_* API,而不是用于邮件功能

标签: php email nl2br mysql-escape-string


【解决方案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";

【讨论】:

  • 我把它包括在内,它做了两件事。 1) 发送了两份电子邮件,2) 没有删除新行(使用 nl2br)
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
相关资源
最近更新 更多