如何使用段落在php中发送消息

时间:2012-07-25 11:24:32

标签: php message

我正在使用下面的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.

显示为

  

你好,这是一条消息。回复。

所有事情都处于困境中,并且会弄乱一些东西。我如何保留格式。我发送的消息来自我的桌面应用程序,并将用户定义的数据发送给我。

5 个答案:

答案 0 :(得分:0)

<p> </p>;

中获得的内容中使用$_GET['message']标记

答案 1 :(得分:0)

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

另外,为什么使用GET方法? POST是更好的选择

答案 2 :(得分:0)

您可以像这样创建消息

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

$content . = " <br/> Thanks <br/> Your Name";

答案 3 :(得分:0)

在其他所有内容之前,请确保您的邮件包含正确的换行符。您可以在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' ) ;
?>

两者中的任何一个都应该产生你想要的结果。

答案 4 :(得分: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);

确保普通/文字区域中的文字被一个或多个\r\n分隔,以获得类似于html段落的视觉效果。