Не приходит активация пользователя на Rambler.ru

Angelight

Новичок
Не приходит активация пользователя на Rambler.ru

Заранее прошу прощения, если нечто подобное уже обсуждалось. По поиску, как ни старался, к сожалению, так и не нашел ответа на свой вопрос...

А вопрос вот в чем: после регистрации, письмо с активацией пользователя не приходит на email, зарегистрированный в Рамблер.ру. Тестировал отправку письма с бесплатного хостинга с поддержкой php & mysql. Письма с активацией успешно отправляются на ящики mail.ru и gmail.com. Но вот, ящики Рамблера пустуют. Непойму, в чем дело? Есть подозрение, что и на менее распространенные почтовые сервисы также активация не приходит.

Замечу, что со многих сайтов активация не приходит именно на ящики Рамблер.ру. С форумов системы vBulletin та же ситуация. Уже перепробовал самые различные коды, где наглядно показана сама регистрация пользователя + отправка письма с активацией. Ничего не помогло. В любом случае, письмо отправляется, но вот до адресата не доходит.

Здесь также не нашел ответа: http://www.php.net/manual/en/function.mail.php

Я новичок в php и не застрахован от всевозможных ошибок. Уже выбился из сил. Очень надеюсь на вашу помощь! Заранее благодарен!

Фрагмент кода ($dbcnx - в переменную занесено соединение с БД):

PHP:
<?php 

$member_insert = "INSERT INTO members (name, password, email, date) 
                               VALUES ('$nickname', '$hashed_pass', '$email', NOW())";
$reg_result = mysql_query($member_insert, $dbcnx);
if($reg_result) {
$select_validation = "SELECT id FROM members WHERE name = '$nickname' AND password = '$hashed_pass'";
$validation_query = @mysql_query($select_validation, $dbcnx);
$idlink = rawurlencode(base64_encode($nickname . "||" . $email . "||" . $hashed_pass . "||" . md5(md5($nickname . $email . DBHOST . DBNAME))));
$subject = "Подтверждение регистрации";
$message = "Спасибо за регистрацию!<br /><br />Ваш логин: " . $nickname . "<br /><br />
Перейдите по ссылке: <a href=\"http://mysite.ru/activation.php?do=validation&code" . $idlink . "\">Активация</a>";
@mail($email, $subject, $message, "Content-type:text/html; Charset=windows-1251");
exit("Поздравляем! Регистрация успешно завершена! На ваш e-mail было отправлено письмо с подробными инструкциями для активации аккаунта...");
} else {
exit("Регистрация не завершена!");
}
?>
 

Angelight

Новичок
Автор оригинала: Single
тут есть ответ на твой вопрос.
Спасибо! Буду разбираться...

-~{}~ 01.04.10 08:15:

Проблема с Рамблером решена! Все дело было в заголовках.

Делюсь тем, что мне помогло, вдруг кому-либо понадобиться...

PHP:
$headers.="Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers.="from:[email protected]\r\n";
Экспериментировать, подставляя окончание \r\n или \n, в поле from.

Итоговый вариант кода будет таковым:

PHP:
<?php  

$member_insert = "INSERT INTO members (name, password, email, date)  
                               VALUES ('$nickname', '$hashed_pass', '$email', NOW())"; 
$reg_result = mysql_query($member_insert, $dbcnx); 
if($reg_result) { 
$select_validation = "SELECT id FROM members WHERE name = '$nickname' AND password = '$hashed_pass'"; 
$validation_query = @mysql_query($select_validation, $dbcnx); 
$idlink = rawurlencode(base64_encode($nickname . "||" . $email . "||" . $hashed_pass . "||" . md5(md5($nickname . $email . DBHOST . DBNAME)))); 
$subject = "Подтверждение регистрации"; 
$message = "Спасибо за регистрацию!<br /><br />Ваш логин: " . $nickname . "<br /><br /> 
Перейдите по ссылке: <a href=\"http://mysite.ru/activation.php?do=validation&code" . $idlink . "\">Активация</a>";
$headers.="Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers.="from:[email protected]\r\n"; 
@mail($email, $subject, $message, $headers); 
exit("Поздравляем! Регистрация успешно завершена! На ваш e-mail было отправлено письмо с подробными инструкциями для активации аккаунта..."); 
} else { 
exit("Регистрация не завершена!"); 
} 
?>
 

yok

Новичок
Single я конечно не знаю как другие, но первое твое направление -тут-, почитав ужаснулся. Читать невозможно.
Одна лабуда, лабуда и подобное. Что за автор, может там и есть зерно и оно наверняка есть, но читать невозможно таких.

Извините за офтоп.

Вот помоему такого же содержания страница но почувствуйте разницу изложения материала тут
http://phpclub.ru/detail/article/mail
и твоей ссылки
http://phpfaq.ru/mail

извини Single, ничего личного.
 

Single

пилот капсулы
yok
может стоит забыть про программирование пока не поздно. не?
 

Angelight

Новичок
Автор оригинала: Single
Прежде чем экспериментировать читаем это.
Спасибо. Буду потихоньку разбираться (эх, жаль. Я совсем не силен в английском. Но как-нибудь разберусь). :) Ссылочки сохранил для последующего внимательного ознакомления...

Автор оригинала: yok Одна лабуда, лабуда и подобное. Что за автор, может там и есть зерно и оно наверняка есть, но читать невозможно таких.
Согласен. Для новичков читать и вникать трудновато. Тем более для меня, человека, у которого, на данный момент времени, полная каша в голове. Ибо обучение такому сложному ремеслу, как php, дается пока что с трудом. Собираешь знания по крупицам, перенимаешь чужой опыт, учишься на чужих и своих ошибках. Но что поделать, придется вникать... ))
 

yok

Новичок
Angelight , я тоже готовлю сценарий, но твое сообщение о рамблере насторожило меня.
Ты уверен что все нормально с кодом.
Попробуй создай сценарий отдельный и отправь на многие почты, mail, yandex, rambler тестовое письмо.
Если уйдет на рамблер и везде, то значит где то в сценарии ошибка.
Если не уйдет простое письмо тестовое на рамблер, значит надо на форумах порыться, может у рамблера что .
Отпишись, вдруг это серьезно.

Да, вроде стандарт такой в заголовках должно быть не зависимо от text/plain
$headers = 'MIME_Version: 1.0' . "\r\n";
Точно не скажу, но кажись так.

И тестовое сформируй простое и потом с кодировками тем и содержания и новая строка обязательно
$headers.= 'Content-Type: text/html; charset=Windows-1251' . "\r\n";

ты уже исправил, вижу.

Ошибка MIME не стандарт для text/plain, его использует обязательно

-----------------------------------------------------------------------------------
Изначально, когда почта только зарождалась, никакого MIME не существовало. Он появился несколько позже как расширение к стандарту RFC-822. В настоящее время любое отправленное письмо, даже если оно не содержит никаких вложений, так или иначе использует MIME.
----------------------------------------------------------------------------

Однако
--------------------------------------------------------
почтовый клиент пользователя может не поддерживать формат MIME
------------------------------------------------------------------------
 

Angelight

Новичок
Автор оригинала: yok
Angelight , я тоже готовлю сценарий, но твое сообщение о рамблере насторожило меня.
Ты уверен что все нормально с кодом.
Попробуй создай сценарий отдельный и отправь на многие почты, mail, yandex, rambler тестовое письмо.
Если уйдет на рамблер и везде, то значит где то в сценарии ошибка.
Если не уйдет простое письмо тестовое на рамблер, значит надо на форумах порыться, может у рамблера что .
Отпишись, вдруг это серьезно.
Провел кое-какие эксперименты. Без проблем письма уходят на ящики mail.ru, rambler.ru, yandex.ru и gmail.com. Но вот на такие сервера, как mtu-net.ru, km.ru, online.ru, freemail.ru, rol.ru, inbox.lv письма не приходят. Сюда можно смело добавить еще львиную долю малораспространенных почтовых сервисов. Наверняка проблемы уже не в коде, а в фильтре на вышеуказанных серверах, которые, по каким-то мистическим обстоятельствам, блокируют прием почты. )) Возможно, нужно отправлять в какой-либо иной кодировке. Пока незнаю. Я лишь провожу эксперименты, дабы найти единственно верное решение...

Автор оригинала: yok Да, вроде стандарт такой в заголовках должно быть не зависимо от text/plain
$headers = 'MIME_Version: 1.0' . "\r\n";
Точно не скажу, но кажись так.

И тестовое сформируй простое и потом с кодировками тем и содержания и новая строка обязательно
$headers.= 'Content-Type: text/html; charset=Windows-1251' . "\r\n";
Я тут провел легкие "косметические" изменения. Вот, что получилось:

PHP:
$subject = "Подтверждение регистрации";
$message = "Спасибо за регистрацию!\n\nВаш логин: " . $nickname . "\n\nПерейдите по ссылке: \n\nhttp://example.com/activation.php?code=" . $code . "";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers.="Content-type: text/plain; charset=\"windows-1251\"\r\n";
$headers.="from:[email protected]\n";
@mail($email, $subject, $message, $headers);
Примерно так. Буду глубже вникать в эту тему и по мере изучения, добавлять что-то новое. Синхронно проверять на практике.

Автор оригинала: yok почтовый клиент пользователя может не поддерживать формат MIME
Будем надеяться, что заголовок "MIME-Version" в таком случае проигнорируется... ))
 

yok

Новичок
Вот работающий код с html и картинкой лого

$file=fopen("logo.gif","rb");
$to=$mail;
$boundr="INDEVER-1234567";
$tema = 'Подтверждение регистрации ';
$subject="=?windows-1251?b?".base64_encode($tema)."?=";
$header="From: NOREPLY \r\n";
$header.="Mime-Version: 1.0 \r\n";
$header.="Content-Type: multipart/related; boundary=\"$boundr\" \r\n";
$header.="Content-Transfer-Encoding: 8but \r\n";
$body=" \r\n\r\n";
$body.="--$boundr \r\n";
$body.="Content-type: text/html; charset=\"windows-1251\"\r\n";
$body.="Content-Transfer-Encoding: 8bit \r\n\r\n";
$body.="$html \r\n";
$body.=" \r\n\r\n";
$body.="--$br \r\n";
$body.="Content-Type: image/gif; \r\n";
$body.="Content-Transfer-Encoding: base64 \r\n";
$body.="Content-ID: logo \r\n\r\n";
$body.=chunk_split(base64_encode(fread($file,10+filesize("logo.gif"))))."\r\n";
$body.="--$br--\r\n\r\n";

mail($to,$subject,$body,$header)

При чем, когда будешь писать $html
$html="asdfasdfsad lkdsf;lasdf $my dsafasd";
необходимости писать так нет "dd".$new."dddd"
так пишется в апострофах. //отступление
Прочитай о синтаксе строковых переменных.
А да в $html описать картинку так
$html='
hello my dear friend <img src="cid:logo">
';

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

Картинка logo.gif положи в тот же каталог, или измени путь
 
Сверху