【问题标题】:linebreak in html php emailhtml php电子邮件中的换行符
【发布时间】:2013-09-18 10:45:35
【问题描述】:

我正在使用下面的代码使用 php 将 textarea 内容作为电子邮件发送

<?php
$to = $_POST['emailbox'] ;
$message1 = $_REQUEST['output_textarea'];
$subject = 'script';
$message = "
<html>
<body>
<table bgcolor='lightcyan'>
<p>heading</p>
$message1;
</table>
</body>
</html>
";
$headers  = "From: admin@domain.com\r\n";
$headers .= "Reply-To: acr@domain.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);
?>  

但是电子邮件忽略了文本区域中的所有换行符。如何在文本区域保留换行符?

【问题讨论】:

  • 开启$message1 将所有\n 字符替换为&lt;br&gt;
  • 只使用BR标签在html邮件内容中换行
  • 使用nl2br
  • 谨防让垃圾邮件变得太容易——这个脚本允许用户将他想要的任何消息发送到他想要的任何地址;这基本上是对垃圾邮件发送者的公开邀请,让他们使用您的系统发送尽可能多的垃圾邮件。
  • 另外,您的 HTML 代码中有一个 &lt;table&gt; 标记,看起来不正确。您可能应该用 &lt;div&gt; 替换它,除非您实际上希望 $message1 包含 &lt;tr&gt;&lt;td&gt; 元素。

标签: php html-email


【解决方案1】:

首先,这里不需要分号:

$message1;

当您在电子邮件中使用 html 时,您必须使用 &lt;br/&gt; 标记来换行。

&lt;br/&gt; 替换\n 的最佳方法是使用nl2br() PHP 函数。

在您的代码中替换:

$message1 = $_REQUEST['output_textarea'];

与:

$message1 = nl2br($_REQUEST['output_textarea']);

【讨论】:

  • `nl2br` 表示我们为什么需要使用它
  • @sanojlawrence nl2br 是一个 PHP 函数,它在字符串中的所有换行符之前插入 HTML 换行符。
【解决方案2】:

你必须像这样使用它:

<?php
$message1 = $_REQUEST['output_textarea'];
$message1 = nl2br($message1);

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2016-05-23
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2017-10-21
    • 1970-01-01
    相关资源
    最近更新 更多