PHP перерывает почту при попытке отправить слово «localhost» в теле письма - так странно - PullRequest
0 голосов
/ 18 июня 2011

У меня есть форма php, которую покупатели заполняют, чтобы отправить электронное письмо продавцу. Все работает нормально, за исключением того, что я тестирую его на своем локальном сервере MAMP.

Проблема: $ message1 (тело письма) происходит от $ _POST ['textarea']. Если есть URL "http://localhost", отправленный через текстовую область формы (помещенную в тело письма), то чертова электронная почта никогда не будет доставлена. http://www.anythingelse.com работает нормально .... Я довольно озадачен. есть какая-то функция безопасности, которая запрещает отправку локальных URL-адресов через форму?

Если в моем коде есть другие явные ошибки, любая помощь приветствуется.

С уважением, Daniel

public function saleRequest($seller_email, $seller_username, $buyer_email, $buyer_username, $book_title, $subject1, $message1) {


    define("NAME","xxxxxxx");
    define("FROM",$buyer_email);

    $subject = substr_replace($subject1, '', 30);

    // -=-=-=-=- MAIL HEADERS

    $mime_boundary = md5(time()); 
    $headers = "From: ".NAME." <".FROM.">\n";
    $headers .= "MIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\";\n\n"; 

    // -=-=-=-=- TEXT EMAIL PART

    $message = "--$mime_boundary\n";
    $message .= "Content-Type: text/plain; charset=UTF-8\n"; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

    $message .= wordwrap(stripslashes($message1), 30, PHP_EOL)."\n";

    // -=-=-=-=- HTML EMAIL PART

    $message .= "--$mime_boundary\n"; 
    $message .= "Content-Type: text/html; charset=UTF-8\n"; 
    $message .= "Content-Transfer-Encoding: 8bit\n\n"; 

    $message1 = $message1."this is html";

    $message .= nl2br(wordwrap(stripslashes($message1), 30, "<br>"))."<br>\n";

    // -=-=-=-=- FINAL BOUNDARY

    $message .= "--$mime_boundary--\n\n";
    unset($mime_boundary);
    return mail($seller_email,$subject,$message,$headers);
}

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Звучит как спам-фильтр.Для большинства SMTP-серверов имеет смысл отфильтровывать почту, содержащую URL-адреса localhost.

Проверьте заголовки одного из рабочих сообщений.Посмотрите, через какие серверы он прошел (Received строки), и спросите системных администраторов этих серверов, или, что еще лучше: настройте почтовый сервер так, чтобы он доставлял все тестовые сообщения локально, а не отправлял их третьим лицам.Таким образом, вы можете контролировать окружающую среду.Если у вас уже есть контроль над всеми задействованными почтовыми серверами, проверьте их файлы журналов.

0 голосов
/ 18 июня 2011

Есть ли какая-нибудь функция безопасности, которая запрещает отправку локальных URL-адресов через форму?

Нет. По крайней мере, не в PHP. Может быть проблема с почтовым сервером, но это нужно проверять с каждым MTA.

...