用php发送电子邮件-\r\n无法将其拆分

用php发送电子邮件-\r\n无法将其拆分,php,email,Php,Email,我有这个PHP脚本发送电子邮件给我自己 <?php try { $to = "myself@gmail.com"; $subject = "Test Mail"; $message = $_GET['mail']; $from = "someoneelse@gmail.com"; $headers = "From:" . $from; mail($to,$subject,$message,$headers); echo "Mail S

我有这个PHP脚本发送电子邮件给我自己

<?php
try {
    $to = "myself@gmail.com";
    $subject = "Test Mail";
    $message = $_GET['mail'];
    $from = "someoneelse@gmail.com";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
    echo "Mail Sent.";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
?>
有没有可能让它真的把它分割成

 Test Message
 Test Message 2

仅供参考-如果您使用$\u GET发送邮件-这非常危险(请考虑您网站的安全性)

不管怎样:最简单的方法是对新行使用URL编码

新行的urlencode为
%0A

PHP已经支持

只需添加:

function translateCharacters($str){
    return nl2br(str_replace("\\r","\r",
           str_replace("\\n","\n",
           str_replace("\\t","\t",
           $str))));
}
$message = translateCharacters($_GET['mail']);
这将把
\r
\n
\t
转换为
CR
LF
选项卡

1)如果直接使用来自$\u GET值的值,您应该查看:
urlencode()
urldecode()


2) 不要重新发明轮子,而要创造新的功能。查看
nl2br()

为什么不使用此&code>nl2br()?@DarylGill:它不会将
“\\n”
转换为
“\n”
,而是将
“\n”
转换为“
\n”。它不能完成全部工作,但值得补充。我刚刚运行了
echo“这是一个\\n示例”在测试页中,返回值为:
这是一个\n示例
。。仅此一点,当我说
\\n
是一个转义的新行分隔符时,它就支持,用于在浏览器中以双倒的方式显示
\n
quotes@DarylGill:他的GET请求有
“Bla Bla\\n更多Bla”
。然后我将其转换为
“Bla-Bla\nMore-Bla”
,并对其运行
nl2br
,返回
“Bla-Bla
\nMore-Bla”
,这是电子邮件中需要发送的内容。我哪里错了?
$message = urlencode($_GET['mail']);
function translateCharacters($str){
    return nl2br(str_replace("\\r","\r",
           str_replace("\\n","\n",
           str_replace("\\t","\t",
           $str))));
}
$message = translateCharacters($_GET['mail']);