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

jabbaxatt

Добрый модератор
Регистрация
21 Янв 2009
Сообщения
902
Реакции
433
Возникла проблема.
С сайта при регистрации юзерам отправляется письмо с помощью 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>Важно! Сбой при отправлении письма на Вашу почту. Пожалуйста.....';
    }
 
Нужно с вашего ящика, существующего на этом домене, послать письмо ня мылору и получить ответ от него. Их может быть два типа - 1) ваш IP в спам-листе и 2) не прописана PTR запись DNS-сервера, таким вот примитивно-дебилоидным методом мылору "борется со спамом", видать нормальных специалистов у них нет, которые могли бы настроить по человечески работу со спамом, как это делают на gmail, вот и переложили свои проблемы на вас и других вебмастеров, теперь это ваша проблема, а нам, типа на вас насрать...
 
С тех поддержкой и с хостером списываюсь,

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

Письма с этого же IP и домена отправленное не моим скриптом а через клиент squirrelmail доходят ( но с убитой кодировкой).
 
Если бы проблема была со скриптом, то вообще никуда бы не доходило. Простая логика.
 
В том вопросе так и не разобрался - хостер по запросу сказал что 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, $errstr, 10);
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);
 
Если создал запись, то ее отсутствие и было причиной. Обновится днс - проблема уйдет, 100%
 
Если создал запись, то ее отсутствие и было причиной. Обновится днс - проблема уйдет, 100%
Ок, спасибо. Завтра обязательно проверю. А по вопросам рассылки через smtp что я выше отписал - есть информация?
 
На mail.ru если ни чего за 3 года не изменилось позволяет с 1 аккаунта слать не более 25 писем в час по SMTP
 
Назад
Сверху