通过$ _POST处理textarea内容后保留多行

时间:2012-02-06 15:19:52

标签: php html 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>

当在上面的textarea中填写一条消息时,它将被提交给以下脚本(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()函数中使用的变量中。

但是当我在textarea中使用多行时,在脚本中的某些位置,这些都被转换为一条巨大的行,最终会创建一个混乱的电子邮件。正如你们有些人可能已经看到的那样,我已经创建了一个标题,说明邮件的内容是HTML。这是因为我在通过$ _POST发送的文本周围添加了<p>元素。我试图删除它,因为它可能是将它全部转换为一行的东西。但这没有用。

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

感谢您提前回答!

2 个答案:

答案 0 :(得分:5)

也许ypu在php中寻找nl2br函数..

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

答案 1 :(得分:1)

如果您的邮件内容是HTML,请检查功能nl2br