通过$_POST处理文本区域内容后保留多行


Keep multiple lines after processing textarea content through $_POST

我创建了一个非常简单的PHP系统,使用MySQL数据库和PHP向邮件列表发送电子邮件。它还没有完成,因为通过mail()函数发送的邮件会直接进入大多数邮件程序中的垃圾邮件文件夹,所以我将来会使用PHP连接到我的SMTP服务器。虽然有些事情我想先解决。

<table border="0">
<form method="post" action="send.php">
<tr><td>Onderwerp:</td><td><input type="text" style="width:200px;" name="sub" /></td></tr>
<tr><td>Bericht:</td><td><textarea name="mes" style="width:200px; height:100px;"></textarea></td></tr>
<tr><td></td><td><input type="submit" style="width:200px;" value="Verzend" /></td></tr>
</form>
</table>

当在上面的文本区域中填写消息时,它将被提交到以下脚本(send.php):

while($row = mysql_fetch_array($result)){
$to      = $row['email'];
$subject = $_POST['sub'];
$message = $_POST['mes'];
$headers = 'From: from@from.com>' .  "'r'n" . 'Reply-To: reply@reply.com' . "'r'n" . 'X-Mailer: PHP/' . phpversion() . "'r'n" . 'MIME-Version: 1.0' . "'r'n" . 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
mail($to, $subject, $message, $headers);
}

当然,上面还有一些脚本可以连接到数据库等,但这与这里无关。正如您所看到的,通过$_POST接收的消息文本被放入mail()函数中使用的变量中。

但是,当我在文本区域中使用多行时,在脚本的某个时刻,这些行都被转换为一行,最终会创建一封混乱的电子邮件。正如你们中的一些人可能已经看到的,我已经创建了一个标题,上面写着邮件的内容是HTML。这是因为我在通过$_POST发送的文本周围放置了一个<p>元素。我试图删除这个,因为它可能是将所有内容转换为一行的东西。但这无济于事。

当然,您可以在HTML中使用<br />,但要求列表中的所有用户使用它来创建新行是很愚蠢的。那么:有没有一种方法可以让多行保留在电子邮件中,而不必在文本字段中填写任何不同的内容?

感谢您提前回答!

也许ypu正在php中寻找nl2br函数。。

$message = nl2br($_POST['mes']);

如果您的邮件内容是HTML,请检查函数nl2br。