0

我需要做一个获取请求,然后发送电子邮件。问题是所有内容都在 url 中传递,包括 html 内容。我在这里面临两个问题:

  1. 由于电子邮件内容可以任意长,当我通过浏览器运行时,它会显示太大的 URI。此外 file_get_contents 也显示无效的 aqrguement 错误。

  2. 当我对 HTML 进行 urlencode 时,我丢失了内联样式标签,因此邮件无法正确显示。

我正在访问类似的网址

http://s.domain.com/send_email.php?to=to@to.com&from=from@from.com&subject=subject&html=urlencodedhtml

如果 HTML 内容不是很长,这是可行的,我正在使用它来将内容中的链接重写为其他一些 url 以启用跟踪。如何通过 URL 传递大字符串。

4

2 回答 2

0

请注意,安装了 suhosin 补丁的 PHP 设置对于获取参数的默认限制为 512 个字符。因此,如果用户提供 loong 数据,那么您的 URl 将不支持,尽管这种做法对黑客来说是个坏习惯和小菜一碟。

检查来源

为此,您可以使用POST并可以在第二页上接收所有变量。

例如:

$to = 'abc@xyz.com';
$subject = 'Your subject here'
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: Your Site <abc@abc.com>' . "\r\n";
$message = 'Your Html goes here';

mail($to, $subject, $message, $headers );    
于 2013-08-27T07:56:38.950 回答
0

使用 GET 请求将始终对可以传递给脚本的数据量设置非常严格的限制。

根据客户端和服务器的不同,可以发送的数据量通常不超过 8 KB。大多数服务器支持最长为 8 KB 的 URL。在客户端 MSIE 和 Safari 只支持大约 2 KB,Opera 大约 4 KB,只有 Firefox 处理 8 KB。当然,这对于您的用例来说仍然不够。

因此,恐怕唯一可能的解决方案是执行 POST 请求。

于 2013-08-27T07:40:53.377 回答