用php发送电子邮件-\r\n无法将其拆分
我有这个PHP脚本发送电子邮件给我自己用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
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']);