Скрипт отправки почты - СПАМ! ПОЧЕМУ?

dollar1981

Гуру форума
Заблокирован
Регистрация
17 Май 2012
Сообщения
183
Реакции
88
  • Автор темы
  • Заблокирован
  • #1
Добрый день уважаемые форумчане.
Суть проблемы такова: Есть обработчик почты ->
Код:
<?php

header('Content-Type: text/html; charset=utf-8');


$to = "info@art-climat.shop"; // почта администратора сайта, на который будут приходить письма info@art-climat.com

//print_r($_POST);

if(!empty($_POST["date"]) && !empty($_POST["adress"]) && !empty($_POST["tel"]) && !empty($_POST["fio"])){ // проверка полей на пустоту, если не пустые данные пришли, то идём дальше

    // trim - обрезает пробелы в начале и конце
    // htmlspecialchars - преобразует специальные символы в HTML-сущности
    // strip_tags - удаляет HTML и PHP-теги из строки
    $date = trim(htmlspecialchars(strip_tags($_POST["date"])));
    $adress = trim(htmlspecialchars(strip_tags($_POST["adress"])));
    $tel = trim(htmlspecialchars(strip_tags($_POST["tel"])));
    $fio = trim(htmlspecialchars(strip_tags($_POST["fio"])));
    $comment = trim(htmlspecialchars(strip_tags($_POST["comment"])));

    // указываем заголовки
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $headers .= 'To: Рассчет замер <info@art-climat.shop>' . "\r\n";
    $headers .= 'From: Рассчет замер <info@art-climat.shop>' . "\r\n";
    $headers .= 'Bcc: info@site.ru' . "\r\n";

    $cof = '';

    if(!empty($_POST["param88_koef"])) $cof .= '
        <tr>
            <td>Погодные условия (осадки, низкие температуры - ниже -10 С<sup>o</sup>)</td>
            <td>'.$_POST["param88_koef"].'</td>
        </tr>';
    if(!empty($_POST["param89_koef"])) $cof .= '
        <tr>
            <td>Вечерние работы (с 18:00 до 00:00)</td>
            <td>'.$_POST["param89_koef"].'</td>
        </tr>';
    if(!empty($_POST["param90_koef"])) $cof .= '
        <tr>
            <td>Ночные работы (с 00:00 до 07:00)</td>
            <td>'.$_POST["param90_koef"].'</td>
        </tr>';
    if(!empty($_POST["param91_koef"])) $cof .= '
        <tr>
            <td>Работа в действующих организациях с большим передвижением людей</td>
            <td>'.$_POST["param91_koef"].'</td>
        </tr>';
    if(!empty($_POST["param92_koef"])) $cof .= '
        <tr>
            <td>Работа в стесненных условиях</td>
            <td>'.$_POST["param92_koef"].'</td>
        </tr>';

    // формируем тело письма
    $message = '
    <html>
        <head>
            <title>Новая заявка</title>
        </head>
        <body style="font-family:Arial,sans-serif; background: #E7F5FA;">
            <p><b>Дата:</b> '.$date.'</p>
            <p><b>Адрес:</b> '.$adress.'</p>
            <p><b>Телефон:</b> '.$tel.'</p>
            <p><b>ФИО:</b> '.$fio.'</p>
            <p style="color: #ff0000;font-size: 22px;"><b>Комментарий:</b> '.$comment.'</p>
            <p style="color: #3e5800;font-size: 22px;"><b>ИТОГО:</b> '.$_POST["total"].'</p>
            <table>
                <tr style="height: 13px;">
                    <td style="background-color: #125b87; font-weight: bold; color: #ffffff; text-align: center; width: 100%; height: 13px;">Наименование</td>
                    <td style="background-color: #125b87; font-weight: bold; color: #ffffff; text-align: center; width: 50px; height: 13px;">Цена</td>
                    <td style="background-color: #125b87; font-weight: bold; color: #ffffff; text-align: center; width: 50px; height: 13px;">Кол.</td>
                    <td style="background-color: #125b87; font-weight: bold; color: #ffffff; text-align: center; width: 100px; height: 13px;">Сумма</td>
                </tr>
                '.$cof.'
            </table>
        </body>
    </html>
    ';

    if(mail($to, "Новая заявка", $message, $headers)){ // если отправка прошла успешно, то...
        echo "Сообщение отправлено!"; // выводим пользователю сообщение
    } else{ // если не отправилось по како-то причине, то...
        echo "Не получилось отправить сообщение"; // выводим пользователю сообщение
    }

} else{ // если пустые данные пришли
    echo "Необходимо заполнить все поля!"; // выводим пользователю сообщение
}

?>

Письма через этот обработчик летят в папку СПАМ. При этом если я частично за комментирую заголовки то письма начинают приходить в папку входящие, но при этом тело письма приходит просто в html тегах, а не красивой формой как должно быть. Всю голову сломал.
Направьте!
 
  • Автор темы
  • Заблокирован
  • #3
А если через джимейловский smtp-сервер ?
Свифтмейлером, например
Для просмотра ссылки Войди или Зарегистрируйся
Не подойдет. Там требования php 7.0, а у меня CMS не работает с этим php.

Как понять что с заголовками не так? Ведь если я комментирую заголовки через // то письма приходят не в СПАМ, а нормально. Но само тело письма не распознается, то есть обработка html не происходит и тело письма выглядит как просто код html, а не таблица.
 
Последнее редактирование модератором:
Есть и предыдущие версии, в том числе под php 5.3
Смысл не в самом свифтмейлере, а в отправке через smtp гугла - нет проблем со спамом, если не спамить злостно.

Отправь то же самое письмо с джимейловского аккаунта. Скорее всего оно не попадёт в спам. Сравни заголовки

p.s. Просто со свифтмейлером не нужно ничего придумывать
 
  • Автор темы
  • Заблокирован
  • #6
Затести на этом сервисе Для просмотра ссылки Войди или Зарегистрируйся
Должно показать , что не так.
Не шлет. Пишет что только на домены вида mail-tester.com можно слать.

Есть и предыдущие версии, в том числе под php 5.3
Смысл не в самом свифтмейлере, а в отправке через smtp гугла - нет проблем со спамом, если не спамить злостно.

Отправь то же самое письмо с джимейловского аккаунта. Скорее всего оно не попадёт в спам. Сравни заголовки

p.s. Просто со свифтмейлером не нужно ничего придумывать
При отправке этим же обработчиком на Яндексовскую почту, письмо приходит куда надо. Вот заголовок:
Код:
Received: from mxfront3j.mail.yandex.net ([127.0.0.1])
    by mxfront3j.mail.yandex.net with LMTP id 5yn7hinc
    for <o.dollar@yandex.ru>; Fri, 26 May 2017 15:19:30 +0300
Received: from mailarnv.customers.mta.beget.ru (mailarnv.customers.mta.beget.ru [81.200.116.184])
    by mxfront3j.mail.yandex.net (nwsmtp/Yandex) with ESMTPS id JdUVWph6yk-JTnuDrNv;
    Fri, 26 May 2017 15:19:29 +0300
    (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
    (Client certificate not present)
X-Yandex-Front: mxfront3j.mail.yandex.net
X-Yandex-TimeMark: 1495801169
Authentication-Results: mxfront3j.mail.yandex.net; spf=pass (mxfront3j.mail.yandex.net: domain of vader3.beget.ru designates 81.200.116.184 as permitted sender, rule=[ip4:81.200.112.0/21]) smtp.mail=mailarnv__artoclimat__uj@vader3.beget.ru
X-Yandex-Spam: 1
Received: from mailarnv (Authenticated sender mailarnv@vader3.beget.ru)
    by vader3.beget.ru with local (Exim 4.76)
    (envelope-from <mailarnv__artoclimat__uj@vader3.beget.ru>)
    id 1dEEDJ-0000gu-Ea; Fri, 26 May 2017 15:19:29 +0300
To: o.dollar@yandex.ru
Subject: Новая заявка
MIME-Version: 1.0
Content-type: text/html; charset=utf-8
To: Название сайта <info@site.ru>
From: Название сайта <info@site.ru>
Message-Id: <E1dEEDJ-0000gu-Ea@vader3.beget.ru>
Date: Fri, 26 May 2017 15:19:29 +0300
Return-Path: mailarnv__artoclimat__uj@vader3.beget.ru
 
Последнее редактирование модератором:
Не шлет. Пишет что только на домены вида mail-tester.com можно слать.
Странно это всё. Первый раз с таким сталкиваюсь. Как оно может не слать. Вы вообще откуда отправляете, с хостинга или своего сервака?
 
  • Автор темы
  • Заблокирован
  • #9
Там наверно правил туча. а может есть и неправильные. По факту гугл без DKIM вроде не принимает почту. Я бы на вашем месте арендовал vps и там уже тестил скрипты. Потом уже можно на хостинге проверить.
 
Назад
Сверху