在 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;
它只是在我收到的电子邮件中将<br />
显示为文本。当我使用 \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】:使用 "<br>"
而不是 \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 的回答添加评论,但我想说的是,您不应使用 <br>
代替 \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 的自定义函数