2012-01-08 47 views
5

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

我试过\ n和我已经试过
无一不给我

下面是我的工作代码的片段(我认为这只是一个语法的事情,我做错):

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

这只是显示<br />作为电子邮件我收到的文本。当我使用\ n时(我认为它实际上是正确的方式)。我究竟做错了什么?谢谢。此

$newline = ' 
'; 

使用$换行符变量

回答

1

最简单的方法任何你想要的(:

+3

根据您输入Enter键的位置,您将得到不同的结果,因为Mac,Window和Linux使用'\ r'和'\ n'的不同组合处理换行符。 – 2012-01-08 23:02:39

1

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

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

2

使用"<br>"\n而是将工作100%我发现

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

享受:)

2

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

+0

这工作。谢谢 – KarenAnne 2014-01-06 01:05:53

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); 
} 

例如, $ body =“品牌名称:”。 htmlclean($名优产品);

相关问题