0

以下のphpコードを使用してメッセージを送信しています

<?php
$newline = $_GET['message'];

$newline = str_replace("[N]","\n","$newline");
$newline = str_replace("[n]","\n","$newline");

mail($_GET['to'],$_GET['subject'],$newline,"From: ".$_GET['from']);

header( 'Location: http://my_site.com/POMPC/report.html' ) ;
?>

悲しいことに、メッセージを送信すると表示されますが、すべてが一直線に表示され、メッセージが台無しになります。

例:

Hello,
This is a message. 
Reply.

として表示されます

こんにちは、メッセージです。返事。

すべてが一直線上にあり、物事を台無しにします。フォーマットを維持するにはどうすればよいですか。送信するメッセージはデスクトップ アプリケーションからのもので、ユーザー定義データを送信します。

4

5 に答える 5

0

何よりもまず、メッセージの正しい改行が必要な場所に含まれていることを確認してください。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 つのうちどちらでも、必要な結果が得られるはずです。

于 2012-07-25T11:48:22.980 に答える
0

使用するnl2br($_GET['message']);

また、なぜ GET メソッドを使用しているのですか? POST はより良い選択です

于 2012-07-25T11:33:26.093 に答える
0

このようにメッセージを作成できます

$content=" <h3> Hello </h3>, <p>This is a message. <br/> Long string <br/>";

$content . = " <br/> Thanks <br/> Your Name";
于 2012-07-25T11:38:02.787 に答える
0

HTML 段落が必要な場合:

関数だけを使用すると、mail()次のように HTML ソースを構成する必要があります。

3 番目のパラメータには何も記述せず、$message空白のままにします''。そして残りを次のように構成します。

$additional_headers = <<<MAIL
Content-Type: multipart/alternative; boundary=00151747835895c6f804c48dc14b

--00151747835895c6f804c48dc14b
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

    Pararaph 1
    Pararaph 2

--00151747835895c6f804c48dc14b
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

    <p>Pararaph 1</p>
    <p>Pararaph 2</p>

--00151747835895c6f804c48dc14b--
MAIL;

$additional_headers = str_replace("\n", "\r\n", $additional_headers);

プレーン/テキスト領域のテキストが 1 つ以上で区切られていることを確認し\r\nて、html 段落に似た視覚的な感覚を得てください。

于 2012-07-25T12:51:18.677 に答える
0

<p> </p>取得するコンテンツでタグを使用します$_GET['message']

于 2012-07-25T11:31:22.740 に答える