我遇到了sendmail命令的问题。
我正在从数据库调用中提取值,它们看起来很好。 mail命令如下所示:
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
为什么标题“格式错误”?
答案 0 :(得分:1)
我认为在RFC 2822上多花一点时间并不会有什么坏处。
您的to
字段中填充了Bob
。这不是一个合法的地址。有效电子邮件地址的格式非常复杂,但现在,地址的格式通常为localpart@domain
。 (通常不支持通过%
用户名说明符或!
爆炸路径传递到UUCP地址的较旧格式;此外,username@[<ip address>]
可能支持也可能不支持通常,电子邮件地址中必须有@
才能将本地部分与域分开。)
您似乎也在使用用户提供的数据,但未确认其未执行header injection attacks。 (另请参阅suhosin project's documentation about suhosin.mail.protect
。)
您的subject
字段包含</br>
,这是毫无意义的,因为Subject:
标题被解释为纯文本。该字段似乎也使用数据库提供的原始数据。
邮件正文还包含</br>
,这是毫无意义的,因为您的邮件中不包含任何MIME标记,表明存在text/html
content。