0

我有这个 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";
}
?>

如您所见,消息是从 url 中获取的:/uploadscript.php?mail=test Message\r\nTest message 2

但是电子邮件是

 Test MessageTest message 2

是否有可能让它真正分裂它,所以它是

 Test Message
 Test Message 2
4

3 回答 3

0

仅供参考 - 如果您使用 $_GET 作为您的消息 - 这非常危险(考虑您网站的安全性)

无论如何:最简单的方法是对新行使用 urlencoding。

新行的 urlencode 是%0A

PHP 已经支持urlencode()

$message = urlencode($_GET['mail']);
于 2013-11-10T00:53:22.360 回答
0

只需添加:

function translateCharacters($str){
    return nl2br(str_replace("\\r","\r",
           str_replace("\\n","\n",
           str_replace("\\t","\t",
           $str))));
}
$message = translateCharacters($_GET['mail']);

这会将\r, \n,转换\tCR, LF, TAB.

于 2013-11-10T00:55:19.287 回答
0

1)如果直接使用 $_GET 值中的值,您应该查看: urlencode();urldecode();

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

于 2013-11-10T01:22:53.407 回答