Заголовок электронного письма «искажен» при использовании команды sendmail от php.Зачем? - PullRequest
0 голосов
/ 22 февраля 2012

У меня проблемы с командой 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 Ответ

1 голос
/ 22 февраля 2012

Думаю, не мешало бы провести немного больше времени с RFC 2822 .

Ваше поле to заполнено Bob. Это не юридический адрес. Формат действительных адресов электронной почты довольно сложен, но в наши дни адреса обычно имеют вид localpart@domain. (Старые форматы, которые разрешали доставку на адреса UUCP через % спецификаторы имени пользователя или ! bang-paths, часто не поддерживаются; более того, username@[<ip address>] может поддерживаться или не поддерживаться на разных серверах или конфигурациях. Как правило, в адресе электронной почты должен быть @, чтобы отделить локальную часть от домена.)

Вы также, похоже, используете предоставленные пользователем данные без какого-либо подтверждения того, что они не выполняют атак с использованием заголовка . (См. Также документацию проекта suhosin о suhosin.mail.protect.)

Ваше поле subject содержит </br>, что бессмысленно, поскольку заголовок Subject: интерпретируется как простой текст. В этом поле также используются необработанные данные, предоставленные базой данных.

Тело сообщения также включает в себя </br>, что бессмысленно, поскольку ваше сообщение не содержит никакой разметки MIME , указывающей на наличие text/html содержимого .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...