我有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时它是一样的(我假设它实际上是正确的方法)。我究竟做错了什么?感谢。
答案 0 :(得分:8)
您必须将\n
放在双引号"
中而不是单引号'
之间如果您希望此序列被解释为新行(换行符0x0A)字符
看看这个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($名优产品);