Как настроить почту?

Deimos

Пользователь
#1
Подскажите пожалуйста, как настроить почту? А то при регистрации движек пропускает неправильную почту (с ошибками и несуществующюю).
 
G

Gemini_13

Гость
#2
а как движок должен понимать существует такой домен или нет и существует ли на данном домене конкретный почтовик?
 

Deimos

Пользователь
#3
Мы нашли предположительный код:
Код:
$em_a = explode("@" , $email);
if (!getmxrr($em_a[1], $mx)) $html = '<img src="./images/bad.gif"> <span class="leechmed bold">Введите реальный адрес электронной почты!</span>';
Скрин как должен работать:

И главный вопрос, куда его вставить, что бы работал, двигатель TorrentPier II R400
 
G

Gemini_13

Гость
#4
Deimos, вот встроенная функция проверки на валидность:
PHP:
// Check to see if email address is banned or already present in the DB
function validate_email ($email, $check_ban_and_taken = true)
{
    global $lang, $userdata;
 
    if (!$email || !preg_match('#^([_a-z\d])[a-z\d\.\-_]+@[a-z\d\-]+\.([a-z\d\-]+\.)*?[a-z]{2,4}$#i', $email))
    {
        return $lang['EMAIL_INVALID'];
    }
    if (strlen($email) > USEREMAIL_MAX_LENGTH)
    {
        return $lang['EMAIL_TOO_LONG'];
    }
 
    if ($check_ban_and_taken)
    {
        $banned_emails = array();
 
        foreach (DB()->fetch_rowset("SELECT ban_email FROM ". BB_BANLIST ." ORDER BY NULL") as $row)
        {
            $banned_emails[] = str_replace('\*', '.*?', preg_quote($row['ban_email'], '#'));
        }
        if ($banned_emails_exp = join('|', $banned_emails))
        {
            if (preg_match("#^($banned_emails_exp)$#i", $email))
            {
                return sprintf($lang['EMAIL_BANNED'], $email);
            }
        }
 
        $email_sql = DB()->escape($email);
 
        if ($row = DB()->fetch_row("SELECT `user_email` FROM ". BB_USERS ." WHERE user_email = '$email_sql' LIMIT 1"))
        {   
            if($row['user_email'] == $userdata['user_email'])
                return false;
            else
                return $lang['EMAIL_TAKEN'];
        }
    }
 
    return false;
}
указанный на скрине не проходит валидацию из-за регулярки:
PHP:
!preg_match('#^([_a-z\d])[a-z\d\.\-_]+@[a-z\d\-]+\.([a-z\d\-]+\.)*?[a-z]{2,4}$#i', $email)
доменная зона может быть от 2 до 4 символов, а у Вас их 5. Во время валидации указанного почтовика проверяется только правильное заполнение, но не реальное существование такой почты
 

Deimos

Пользователь
#5
Да такая функция есть, но она почему-то не работает. Вводим неправильный адрес почты и она проходит валидацию.
 

Deimos

Пользователь
#7
доменная зона может быть от 2 до 4 символов, а у Вас их 5. Во время валидации указанного почтовика проверяется только правильное заполнение, но не реальное существование такой почты
Почему почта @i.ua не проходит валидацию, @yndex.ru, проходит без проблем, @gmail. ru из 10 только двое получают код, @mail.ru проходит без проблем если не считать что половина писем попадает в спам???
 

Deimos

Пользователь
#9
Gemini_13, Я прошу прощения!!! Пожалуй я не так поставил вопрос. Валидацию проходят все почты и даже есть сообщение что письмо с кодом потверждения регистрации отпровлено на указанный e-mail, но вот само письмо на почту не приходит. В чем может быть проблема???
 

diden05

Пользователь
#10
Gemini_13, Я прошу прощения!!! Пожалуй я не так поставил вопрос. Валидацию проходят все почты и даже есть сообщение что письмо с кодом потверждения регистрации отпровлено на указанный e-mail, но вот само письмо на почту не приходит. В чем может быть проблема???
В настройках почтовой системы, настройках DNS почтового сервера, вас тупо считают спамером, пропишите обратную зону

Please Login or Register to view hidden text.

пропишите SPF запись, поможет :)
 
Сверху