PHP换行似乎不起作用

时间:2009-08-03 07:11:43

标签: php string line-breaks

我有以下代码使用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>

4 个答案:

答案 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";