2

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

4 回答 4

7

您将其作为 HTML 发送 - 将内容类型更改为text/plain它应该可以工作。

于 2009-08-03T07:16:50.927 回答
4

问题是您在标题中说邮件是 HTML 电子邮件:

$headers .= 'Content-type: text/html; charset=iso-8859-1' ."\r\n";

如果要确保与 HTML 和文本客户端的兼容性,请考虑使用 Multipart 内容类型。这可以通过许多不同的方式实现,但一种简单的方法是使用可以为您完成此操作的库。例如,您可以使用PEAR:Mail_Mime

于 2009-08-03T07:17:53.887 回答
2

我不是这方面的专家,但我的猜测是您将内容类型设置为 text/html,这意味着 html 渲染(这意味着换行符被转换为空格)。如果您没有使用任何 HTML 元素(看起来没有),请尝试将内容类型设置为 text/plain。

于 2009-08-03T07:17:17.913 回答
0

如前所述,将其设置为 text/plain 或为换行添加 HTML 换行符:

$content = 'Name: '.$name."</br>\r\n";

于 2009-08-03T07:22:09.853 回答