在 PHP 邮件函数的 $body 中创建一个新行

Posted

技术标签:

【中文标题】在 PHP 邮件函数的 $body 中创建一个新行【英文标题】:Creating A New Line In $body Of PHP Mail Function 【发布时间】:2012-02-05 14:46:55 【问题描述】:

我的 php mail(): 函数适用于我在我的网站上使用的表单。我现在正在尝试格式化 $body 属性,以便在收到后续电子邮件时看起来更漂亮、更有条理。

我试过了\n我也试过了都给了我

这是我正在使用的代码的 sn-p(我认为这只是我做错的语法问题):

if(!empty($brandname) && !empty($firstname) && !empty($lastname) && !empty($email) && !empty($goals) && !empty($bio))
        $to = 'test@test.com';
        $subject = 'Submission Form';
        $body = 'Brand Name: '.$brandname.'<br />Name: '.$firstname.' '.$lastname.'<br />Email: '.$email.'<br />About the Company:'.$bio;
        $headers = 'From: '.$email;

它只是在我收到的电子邮件中将&lt;br /&gt; 显示为文本。当我使用 \n 时也是如此(我假设这实际上是正确的方法)。我究竟做错了什么?谢谢。

【问题讨论】:

【参考方案1】:

最简单的方法

$newline = '
';

在任何你想要的地方使用 $newline 变量 (:

【讨论】:

根据您键入回车键的位置,您将获得不同的结果,因为 Mac、Window 和 Linux 使用 \r\n 的不同组合处理换行符。【参考方案2】:

您必须将 \n 放在双引号中 " 而不是在单引号之间 ' 如果您希望将此序列解释为换行符(换行符 0x0A)

看看这个 php 文档:

http://php.net/manual/en/language.types.string.php

【讨论】:

【参考方案3】:

从manual page of the mail() function 中,我们了解到为了发送 html 电子邮件,需要说明额外的标头。这在Example #4 中得到了简明的演示。

但是,对于换行符,我不建议使用 HTML。为此,只需在字符串中插入“\n”,确保使用双引号,正如亚伯拉罕所说的那样。

【讨论】:

【参考方案4】:

使用 "&lt;br&gt;" 而不是 \n 它会 100% 我的发现起作用

例如

$subject="Mail from customer ".$_POST['Name'].`"<br>"`;

享受:)

【讨论】:

【参考方案5】:

(PHP 4,PHP 5)

$body = 'Brand Name: '.$brandname."\r\n".'Name: '.$firstname.' '.$lastname."\r\n".'Email: '.$email."\r\n".'About the Company:'.$bio;

如上所述使用"\r\n"作为换行符

【讨论】:

【参考方案6】:

我无法对 Mohammad Saqib 的回答添加评论,但我想说的是,您不应使用 &lt;br&gt; 代替 \r\n,因为这可能会导致电子邮件被“行太长”捕获' 垃圾邮件过滤器。新行对于保持电子邮件更加人性化并成功交付非常重要!

我推荐的方法是:

$output[] = "line 1";
$output[] = "line 2";
$EmailBody = join("\r\n",$output);

此外,您必须确保“清理”标头以避免用户输入的标头注入,这是一个双重确保停止注入的功能:

function sanitize(&$data)
   return str_ireplace(array("\r", "\n", "%0a", "%0d"), '', stripslashes($data));



$headers = 'From: '.sanitize($email);

如果您希望在电子邮件中显示 HTML 标记,请使用标题更改类型:

$headers = 'Content-type: text/html;\r\nFrom: '.sanitize($email);

如果你确实显示了 HTML,你应该清理用户输入以避免任何意外......即 HTML 注入。在 HTML 中显示用户输入的任何地方都可以使用此函数:

function htmlclean($str)
    return htmlentities($str, ENT_QUOTES);

例如$body = "品牌名称:" . htmlclean($brandname);

【讨论】:

以上是关于在 PHP 邮件函数的 $body 中创建一个新行的主要内容,如果未能解决你的问题,请参考以下文章

在 dao room 数据库中创建一个带有 body 的自定义函数

如何在矩阵表 PHP 中创建总计行

如何在角度 ng-repeat 中创建新行?

从文本字段输入在现有表中创建新行。 SwiftUI(故事板)

通过选择标记名称在PHP中创建属性

如何在不在一行中的新行中创建循环项