我有以下代码使用mail()函数发送消息。一切正常,除了每行末尾的换行似乎不起作用。你可以看到我正在使用“\ r \ n”希望这会给我一个换行符但是我没有添加<br>
来获得休息时间,但我宁愿不使用它以防万一没有HTML电子邮件客户端。
<?php
$to = 'user@example.com'; // Was a valid e-Mail address, see comment below
$name = $_REQUEST['name'] ;
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$content = 'Name: '.$name."\r\n";
$content .= 'Email: '.$email."\r\n";
$content .= 'Subject: '.$subject."\r\n";
$content .= 'Message: '.$message."\r\n";
$headers = 'MIME-Version: 1.0' ."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";
// Additional headers
$headers .= 'To: iVEC Help <help@ivec.com>'. "\r\n";
$headers .= 'From: '.$name.' <'.$email.'>' . "\r\n";
mail( $to, $subject, $content, $headers);
?>
<p> You sent it ... good work buddy </p>
<p> <?php '$name' ?> </p>
答案 0 :(得分:7)
您将其作为HTML发送 - 将内容类型更改为text/plain
,它应该有效。
答案 1 :(得分:4)
问题是您在标题中说邮件是HTML电子邮件:
$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";
如果要确保HTML和文本客户端的兼容性,请考虑使用Multipart内容类型。这可以通过许多不同的方式实现,但一种简单的方法是使用可以为您执行此操作的库。例如,您可以使用PEAR:Mail_Mime
答案 2 :(得分:2)
我不是这方面的专家,但我的猜测是你将内容类型设置为text / html,这意味着html渲染(这意味着换行符被转换为空格)。如果您没有使用任何HTML元素(看起来没有),请尝试将内容类型设置为text / plain。
答案 3 :(得分:0)
如前所述,要么将其设置为text / plain,要么为换行符添加HTML中断:
$content = 'Name: '.$name."</br>\r\n";