Как я проверяю, допустим ли адрес электронной почты, ничего не отправляя в него?

У меня есть клиент с 5 000 электронных писем из старого списка, у него есть это, он хочет способствовать своим сервисам. Он хочет знать, какие электронные письма в списке все еще действительны. Я хочу проверить их на него - не отсылая 5K электронные письма случайным образом и затем будучи перечисленным как спаммер или что-то. Идеи?

12
задан Charles 11 June 2010 в 17:22
поделиться

4 ответа

Bucabay ответ - это путь вперед. По сути, такая библиотека проверяет существующую запись DNS для (почтовых) серверов в указанных доменах (A, MX или AAAA). После этого выполняется так называемая проверка обратного вызова. Здесь вы подключаетесь к почтовому серверу, говорите ему, что хотите отправить на определенный адрес электронной почты, и смотрите, говорят ли они ОК.

Для проверки обратного вызова вы должны отметить, что серверы серых списков говорят «ОК» на все, поэтому нет 100% гарантии без фактической отправки электронных писем. Вот код, который я использовал, когда делал это вручную. Это патч для парсера адресов электронной почты из здесь .

    #
    # Email callback verification
    # Based on http://uk2.php.net/manual/en/function.getmxrr.php
    #

    if (strlen($bits['domain-literal'])){
        $records = array($bits['domain-literal']);
    }elseif (!getmxrr($bits['domain'], $mx_records, $mx_weight)){
        $records = array($bits['domain']);
    }else{
        $mxs = array();

        for ($i = 0; $i < count($mx_records); $i++){
            $mxs[$mx_records[$i]] = $mx_weight[$i];
        }

        asort($mxs);

        $records = array_keys($mxs);
    }

    $user_okay = false;
    for ($j = 0; $j < count($records) && !$user_okay; $j++){
        $fp = @fsockopen($records[$j], 25, $errno, $errstr, 2);
        if($fp){
            $ms_resp = "";

            $ms_resp .= send_command($fp, "HELO ******.com");
            $ms_resp .= send_command($fp, "MAIL FROM:<>");

            $rcpt_text = send_command($fp, "RCPT TO:<" . $email . ">");
            $ms_resp .= $rcpt_text;

            $ms_code = intval(substr($rcpt_text, 0, 3));
            if ($ms_code == 250 || $ms_code == 451){ // Accept all user account on greylisting server
                $user_okay = true;
            }

            $ms_resp .= send_command($fp, "QUIT");

            fclose($fp);
        }
    }

return $user_okay ? 1 : 0;
6
ответ дан 2 December 2019 в 07:20
поделиться

Вам придется отправить им электронное письмо хотя бы один раз.

  • Создайте новый список адресов электронной почты. Отправьте старому списку письмо со ссылкой, на которую нужно перейти, чтобы продолжать получать сообщения (повторная подписка).
  • Отправьте им всем электронное письмо и соберите все ответы-отклонения на реальном почтовом ящике, затем удалите эти письма-отклонения из вашего основного списка.
  • Отправьте всем письмо в формате HTML, при этом одно из изображений будет размещено на удаленном хостинге и для его запроса потребуется уникальный идентификатор, который вы зададите в каждом письме. Когда ваш веб-сервер вернет это изображение клиенту, вы сможете считать это письмо активным. Это называется веб-баг, и будет работать только в том случае, если человек автоматически загружает удаленные изображения в своем клиенте.
2
ответ дан 2 December 2019 в 07:20
поделиться

Вы можете проверить электронную почту через SMTP, не отправляя фактическое письмо.

http://code.google.com/p/php-smtp-email-validation/

Вы также можете отправлять электронные письма и проверять их на наличие отказов.

9
ответ дан 2 December 2019 в 07:20
поделиться

Я думаю, вам нужно отправить электронное письмо, чтобы узнать это. Кроме того, это в точности то, чем занимается спамер, и поэтому его заносят в списки спамеров. Рассылка очередями поможет вам скрыть этот факт.

3
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: