在所有其他事情之前,请确保您的消息在您期望的位置包含正确的换行符。您可以将此调试代码放在str_replace
调用之后:
echo "<pre>$newline</pre>";
并查看您的文本是否被分成几行。如果不是,那么问题出在您的输入中。
接下来,看起来您的邮件阅读器将邮件解析为 HTML,因此所有内容都被拼凑在一起。您没有明确指定内容类型,因此由每个邮件阅读器决定如何解释消息。您的问题有两种解决方案:
(1) 将消息声明为 HTML 并用于<br/>
分行:
<?php
$newline = $_GET['message'];
$newline = str_replace("[N]","\n","$newline");
$newline = str_replace("[n]","\n","$newline");
$newline = nl2br($newline);
$headers = "Content-type: text/html\r\nFrom: ".$_GET['from'];
mail($_GET['to'],$_GET['subject'],$newline,$headers);
header( 'Location: http://my_site.com/POMPC/report.html' ) ;
?>
(2) 将消息声明为纯文本并将换行符保留为\n
:
<?php
$newline = $_GET['message'];
$newline = str_replace("[N]","\n","$newline");
$newline = str_replace("[n]","\n","$newline");
$headers = "Content-type: text/html\r\nFrom: ".$_GET['from'];
mail($_GET['to'],$_GET['subject'],$newline,$headers);
header( 'Location: http://my_site.com/POMPC/report.html' ) ;
?>
两者中的任何一个都应该产生您想要的结果。