Заголовок электронного письма "искажен" при использовании команды sendmail от php. Зачем?
У меня проблемы с командой 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
Почему заголовок "неправильно сформирован"?
1 ответ
Я думаю, что не мешало бы провести немного больше времени с RFC 2822.
Ваш to
поле заполнено Bob
, Это не юридический адрес. Формат действительных адресов электронной почты довольно сложный, но в наши дни адреса обычно имеют вид localpart@domain
, (Старые форматы, которые разрешали доставку на адреса UUCP через %
спецификаторы имени пользователя или !
траектории часто не поддерживаются; в дальнейшем, username@[<ip address>]
может или не может поддерживаться на разных серверах или конфигурациях. В общем, должно быть @
в адрес электронной почты, чтобы отделить локальную часть от домена.)
Вы также, кажется, используете предоставленные пользователем данные без какого-либо подтверждения того, что они не выполняют атаки с использованием заголовков. (См. Также документацию проекта suhosin оsuhosin.mail.protect
.)
Ваш subject
поле включает в себя </br>
, что бессмысленно, так как Subject:
заголовок интерпретируется как простой текст. Это поле также использует необработанные данные, предоставленные базой данных.
Тело сообщения также включает в себя </br>
, что бессмысленно, так как ваше сообщение не содержит никакой разметки MIME для указания наличия text/html
содержание