我正在使用下面的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.
显示为
你好,这是一条消息。回复。
所有事情都处于困境中,并且会弄乱一些东西。我如何保留格式。我发送的消息来自我的桌面应用程序,并将用户定义的数据发送给我。
答案 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)
只需使用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段落的视觉效果。