0

我在使用 sendmail 命令时遇到问题。

我正在从数据库调用中提取值,它们看起来不错。邮件命令如下所示:

sendmail(urldecode($row['tracker']),urldecode($row['recipient']),urldecode($row['docurl']),urldecode($row['last_accessed']));

function sendmail($vtracker,$vrecip,$vrawurl,$viewed){
    $to = $vtracker;
    $subject = $vrecip . " has viewed the presentation you sent them.</br>";
    $body= "Full document url:  " . $vrawurl . "<br/>".
    "Time and Date Viewed:  :" .$viewed ;

    if (!mail($to, $subject, $body)) {
       echo("<p>Message delivery failed...</p>");
    }
}

我回应了所有变量,它们看起来还不错:

$vtracker:  Bob ;
$vrecip : gregmcg@yahoo.com ;
$vrawurl : https://docs.google.com/a/advetel.com/present/edit?id=0Ac_KwUsBMiw8ZGN2Z3N3cDlfMTc3c2Jubng0Z2Q ;
$viewed : Mon, 20 Feb 2012 10:36:22 CST ;

我收到一个看起来像这样的错误(从服务器上的错误日志中检索)。

[error] [client 66.249.68.23] File does not exist: /var/chroot/home/content/m/3/s/m3sglobal/html/broadband/missing.html
[Tue Feb 21 20:17:15 2012] [error] [client 70.113.8.83] Failed loading /usr/local/zo/4_3/ZendOptimizer.so:  /usr/local/zo/4_3/ZendOptimizer.so: undefined symbol: empty_string
[Tue Feb 21 20:17:17 2012] [error] [client 70.113.8.83] malformed header from script. Bad header=/home/content/m/3/s/m3sglobal/: Nitrofill_Presentation.php

为什么标题“格式错误”?

4

1 回答 1

1

我认为花更多时间在RFC 2822上不会有什么坏处。

您的to字段填充有Bob。这不是一个合法的地址。有效电子邮件地址的格式相当复杂,但如今,地址通常采用localpart@domain. (允许通过用户名说明符或bang 路径传递到UUCP地址的旧格式通常不受支持;此外,不同的服务器或配置可能支持也可能不支持。通常,电子邮件地址中必须有一个分隔本地域的一部分。)%!username@[<ip address>]@

您似乎还在使用用户提供的数据,而没有任何确认它没有执行标头注入攻击。(另请参阅suhosin 项目的文档suhosin.mail.protect。)

您的subject字段包含 a </br>,这是没有意义的,因为Subject:标题被解释为纯文本。该字段似乎也使用了数据库提供的原始数据。

邮件正文还包括</br>,这是没有意义的,因为您的邮件不包含任何MIME标记来指示text/html内容的存在。

于 2012-02-22T04:05:21.453 回答