0

我一直在尝试在邮件正文中创建换行符,但它不起作用。正文中的所有文本都排成一行。

<?php
if ($_POST["email"]<>'') {
    $ToEmail = 'demo@localhost.com';
    $EmailSubject = 'Site contact form';
    $header = "MIME-Version: 1.0" . "\r\n";
    $header .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $header .= "From: ".$_POST["email"]."\r\n";
    $header .= "Reply-To: ".$_POST["email"]."\r\n";
    $message = "Name: ".$_POST["name"]."\r\n";
    $message .= "Email: ".$_POST["email"]."\r\n";
    $message .= "Comment: ".nl2br($_POST["comment"])."";
    mail($ToEmail, $EmailSubject, $message, $header) or die ("Failure");
?>
Your message was sent
<?php
    } else {
?> 
Sorry message was not sent
<?php
    };
?>
4

3 回答 3

1

更改这些行:

$message = "Name: ".$_POST["name"]."\r\n";
$message .= "Email: ".$_POST["email"]."\r\n";
$message .= "Comment: ".nl2br($_POST["comment"])."";

对此:

$message = "Name: ".$_POST["name"]."<br />";
$message .= "Email: ".$_POST["email"]."<br />";
$message .= "Comment: ".nl2br($_POST["comment"])."";

您对 的想法是正确的nl2br,但您的消息也是“名称:”和“电子邮件:”部分 - 这些行也需要是 HTML 行,因为您正在发送 HTML 电子邮件。

您的代码易受攻击

作为旁注,您应该真正清理您的输入。只是将值转储$_POST到电子邮件中是非常危险的;它使您极易受到攻击

于 2012-09-12T06:33:43.057 回答
0

\n 不会在这里工作

您正在发布到 html 页面

您可以使用<br />

希望有帮助

于 2012-09-12T06:27:39.080 回答
0

而不是\r\n 使用 ,<br />因为\r\n不会转换为 html 标记。

于 2012-09-12T06:29:05.437 回答