2009-08-03 132 views
2

我有以下代码使用mail()函数发送消息。一切工作正常,除了每行结尾处的换行符似乎不起作用。正如你所看到的,我正在使用“\ r \ n”希望这会给我一个换行符,但是我没有添加<br>来获得休息时间,但是我宁愿不使用那个以防万一某人没有一个HTML邮件客户端。PHP换行符似乎不工作

<?php 
    $to = '[email protected]'; // 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 <[email protected]>'. "\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

我冒昧更换E-邮件地址,因为它是一个真正的垃圾邮件发送者只喜欢抓取互联网上的有效电子邮件地址。 – 2009-08-03 07:24:55

+0

谢谢,我已经提醒自己要这样做,但仍然忘了。 – Ankur 2009-08-03 08:46:38

回答

7

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

2

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

4

的问题是,你说,你的标题,该邮件为HTML电子邮件:

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

如果你想确保HTML和文本的客户保持兼容,可以考虑使用多部分的内容类型。这可以通过许多不同的方式来实现,但一个简单的方法是使用可以为你做到这一点的库。例如,你可以使用PEAR:Mail_Mime

0

正如前面提到的,无论是将其设置为纯文本/或添加HTML破行分解:

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