Почта с сайта на rambler и mail не доходит.

Тема в разделе "PHP", создана пользователем jabbaxatt, 29 фев 2012.

Модераторы: latteo
  1. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    896
    Симпатии:
    422
    Возникла проблема.
    С сайта при регистрации юзерам отправляется письмо с помощью PHP.

    На gmail и яндекс почту письма нормально доходят.

    Но на ящики Rambler и mail письма не доходят ВООБЩЕ (ни через час ни чере 10 часов). В тех поддержку рамблера и мейла написал, но их ответа долго ждать.

    Может кто чего подскажет? Наверняка сталкивались.

    Код скрипта:

    PHP:
    // Отправить подтверждение по электронной почте
    $headers='From: noreplay@mysite.ru'// ящик не создан? может тут проблема?
    $pismo="Здравствуйте! Ваш E-mail был указан при регистрации .....
    текст письма
    "
    ;
    $title="Уведомление. Осуществлена регистрация .......";
     
    If (
    mail($email,$title,$pismo,$headers))
    {
    Echo 
    "Письмо с подтверждением регистрации выслано Вам на E-mail. <br>";
    }
    else
        {
        Echo 
    '
        <strong>Важно! Сбой при отправлении письма на Вашу почту. Пожалуйста.....'
    ;
        }
     
  2. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    655
    Нужно с вашего ящика, существующего на этом домене, послать письмо ня мылору и получить ответ от него. Их может быть два типа - 1) ваш IP в спам-листе и 2) не прописана PTR запись DNS-сервера, таким вот примитивно-дебилоидным методом мылору "борется со спамом", видать нормальных специалистов у них нет, которые могли бы настроить по человечески работу со спамом, как это делают на gmail, вот и переложили свои проблемы на вас и других вебмастеров, теперь это ваша проблема, а нам, типа на вас насрать...
     
    jabbaxatt нравится это.
  3. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    896
    Симпатии:
    422
    С тех поддержкой и с хостером списываюсь,

    Но боюсь дело в самом скрипте или в настройках сервера. Скрипт простейший с отправкой функцией mail.
    В интернете пишут разное про формирование заголовка - но решения не нашел.

    Письма с этого же IP и домена отправленное не моим скриптом а через клиент squirrelmail доходят ( но с убитой кодировкой).
     
  4. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    655
    Если бы проблема была со скриптом, то вообще никуда бы не доходило. Простая логика.
     
  5. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    896
    Симпатии:
    422
    В том вопросе так и не разобрался - хостер по запросу сказал что PTR запись DNS-сервера он сделал, через сутки обновится. Но ждать и надеется я не стал.

    А переписал отправку писем - теперь через SMTP идет.

    Т.е. я зарегал ящик на mail.ru и теперь скрипт отправляет письма через mail с ящика mail.ru через smtp.

    Важные вопросы

    1)Сейчас письма отправляются по одному - все нормально. Но потом надо будет отправить до 5000 писем всем зарегистрированным - может ли SMTP загубить эту затею? Инфу по ограничениям ищю, но не нашел.

    2) Нормально ли использовать ящик на майле для отправки или лучше чего другого использовать? Отправлять через почту gmail у меня не получилось(не давал авторизоваться через SMTP).


    Собственно сам скрипт отправки писем через SMTP (основу в сети нашел гдето), может кому пригодится. Отправляет нормально на все сервисы - gmail, mail.ru, rambler.ru, yandex.ru и т.п.

    PHP:
    $emai="мыло того кому пишем";
    // Отправить подтверждение по электронной почте
    $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
    $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('От кого - имя')))."?= <myloginmail@mail.ru>\r\n";
    $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
    $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('От кого - имя')))."?= <myloginmail@mail.ru>\r\n";
    $header.="X-Priority: 3 (Normal)\r\n";
    $header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
    $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($imya)))."?= <$email>\r\n";
    $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(' Осуществлена регистрация - заголовок.')))."?=\r\n";
    $header.="MIME-Version: 1.0\r\n";
    $header.="Content-Type: text/plain; charset=windows-1251\r\n";
    $header.="Content-Transfer-Encoding: 8bit\r\n";
     
    $text="Здравствуйте! Ваш E-mail был указан .....
     
    С уважением,
    "
    ;
     
    $smtp_conn fsockopen("smtp.mail.ru"25,$errno$errstr10);
    if(!
    $smtp_conn) {print "соединение с серверов не прошло"fclose($smtp_conn); exit;}
    $data get_data($smtp_conn);
    fputs($smtp_conn,"EHLO mail.ru\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 250) {print "ошибка приветсвия EHLO"fclose($smtp_conn); exit;}
    fputs($smtp_conn,"AUTH LOGIN\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 334) {print "сервер не разрешил начать авторизацию"fclose($smtp_conn); exit;}
     
    fputs($smtp_conn,base64_encode("myloginmail")."\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 334) {print "ошибка доступа к такому юзеру"fclose($smtp_conn); exit;}
     
     
    fputs($smtp_conn,base64_encode("myParol")."\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 235) {print "не правильный пароль"fclose($smtp_conn); exit;}
     
    fputs($smtp_conn,"MAIL FROM:myloginmail@mail.ru\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 250) {print "сервер отказал в команде MAIL FROM"fclose($smtp_conn); exit;}
     
    fputs($smtp_conn,"RCPT TO:$email\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"fclose($smtp_conn); exit;}
     
    fputs($smtp_conn,"DATA\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 354) {print "сервер не принял DATA"fclose($smtp_conn); exit;}
     
    fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
    $code substr(get_data($smtp_conn),0,3);
    if(
    $code != 250) {Echo '<strong>Важно! Сбой при отправлении письма на Вашу почту.  </strong>'fclose($smtp_conn); exit;}
    else {print 
    "Письмо с подтверждением регистрации выслано Вам на E-mail."; }
     
    fputs($smtp_conn,"QUIT\r\n");
    fclose($smtp_conn);
     
  6. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    952
    Симпатии:
    655
    Если создал запись, то ее отсутствие и было причиной. Обновится днс - проблема уйдет, 100%
     
    jabbaxatt нравится это.
  7. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    896
    Симпатии:
    422
    Ок, спасибо. Завтра обязательно проверю. А по вопросам рассылки через smtp что я выше отписал - есть информация?
     
  8. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    На mail.ru если ни чего за 3 года не изменилось позволяет с 1 аккаунта слать не более 25 писем в час по SMTP