在PHP邮件功能的$体系中创建一个新行

时间:2012-01-08 22:52:20

标签: php forms email

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

我已经尝试过\ n而且我已经尝试过,两人都给了我

以下是我正在使用的代码片段(我认为这只是语法问题,我做错了):

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时它是一样的(我假设它实际上是正确的方法)。我究竟做错了什么?感谢。

6 个答案:

答案 0 :(得分:8)

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

看看这个php文档:

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

答案 1 :(得分:3)

(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"换行

答案 2 :(得分:2)

使用"<br>"代替\n它将100%发现我的发现

例如

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

享受:)

答案 3 :(得分:1)

最简单的方法

$newline = '
';

在任意位置使用$ newline变量(:

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

我无法对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);
}

e.g。 $ body =“品牌名称:”。 htmlclean($名优产品);