在php邮件中没有从textarea换行[重复]。

问题描述 投票:2回答:3

从代码中可以看到,用户首先输入姓名和信息,然后点击发送。当我进行换行时,我收到的邮件中仍然没有任何换行。

<?php
$to = "[email protected]";
$subject = "Message from contact form";

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$_POST['name']}
<br>
<b>Message:</b><br>
{$_POST['message']}
</body>
</html>
EOF;
//end of message

$header  = "MIME-Version: 1.0" . "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "from:[email protected]";

mail($to, $subject, $message, $header);
echo "Email sent!";
?>

<form action="sendmail.php" method="post">
Name: <br>
<input type="text" name="name" style="width: 200px;"> <br><br>

Message: <br>
<textarea name="message" style="width: 200px; height: 100px;"></textarea> <br><br>

<input type="submit" value="Send">
</form>
post php
3个回答
14
投票

HTML就是这样的。不管你按了多少次 进入 在您的HTML源中,只有当有HTML标签告诉浏览器要这样做时,浏览器才会显示行进。

您可以使用 nl2br(). 你还想用 htmlspecialchars().

$name = htmlspecialchars($_POST['name']);
$message = nl2br(htmlspecialchars($_POST['message']));

//begin of HTML message
$message = <<<EOF
<html>
<body>
<b>Name:</b><br>
{$name}
<br>
<b>Message:</b><br>
{$message}
</body>
</html>
EOF;

2
投票

使用这个:-

echo nl2br("My name is\n user2232809");

将输出

我的名字是user2232809

该函数返回带有 <br /> or <br> 插入到所有换行符之前。因此,当你按下回车键时,它将返回相当于html的内容。<br>.


0
投票

在textarea的文本上使用PHP的nl2br()......。

© www.soinside.com 2019 - 2024. All rights reserved.