何よりもまず、メッセージの正しい改行が必要な場所に含まれていることを確認してください。str_replace呼び出しの後にこのデバッグ コードを配置できます。
echo "<pre>$newline</pre>";
テキストが行に分割されているかどうかを確認します。そうでない場合、問題はあなたの入力にあります。
次に、メール リーダーがメッセージを HTML として解析しているように見えます。content-type を明示的に指定していないため、個々のメール リーダーがメッセージの解釈方法を決定する必要があります。問題には 2 つの解決策があります。
(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' ) ;
?>
2 つのうちどちらでも、必要な結果が得られるはずです。