Как я могу проверить правильность адреса электронной почты, не отправляя на него ничего? - PullRequest
12 голосов
/ 11 июня 2010

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

Ответы [ 7 ]

9 голосов
/ 11 июня 2010

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

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

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

6 голосов
/ 11 июня 2010

ответ Букабая - путь вперед. По сути, подобная библиотека выполняет проверку существующих записей 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;
3 голосов
/ 11 июня 2010

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

2 голосов
/ 11 июня 2010

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

  • Создать новый список адресов электронной почты. Отправьте старому списку электронное письмо со ссылкой, по которой нужно перейти, чтобы продолжить получать сообщения (переподписаться).
  • Отправьте им все электронные письма и соберите все отклики на отклики в реальной учетной записи электронной почты, а затем удалите эти отклоненные письма из своего основного списка.
  • Отправьте им все электронные письма в формате HTML, и одно из изображений будет размещено на удаленном компьютере, и для его запроса потребуется уникальный идентификатор, который вы указали в каждом письме. Когда ваш веб-сервер возвращает это изображение своему клиенту, вы можете считать это письмо активным. Это называется веб-ошибка , и она будет работать только в том случае, если пользователь автоматически загрузит удаленные изображения в свой клиент.
1 голос
/ 18 ноября 2015

https://github.com/kamilc/email_verifier - это рубин, который проверяет, существует ли запись MX и что SMTP-сервер сообщает, что адрес имеет действительный почтовый ящик.

0 голосов
/ 04 июля 2017

Вы можете рассмотреть службу MailboxValidator http://www.mailboxvalidator.com/, которая должна соответствовать вашим требованиям. Вы можете получить либо массовый план, где вы можете загрузить CSV-файл, содержащий ваш список адресов электронной почты, либо получить план API, если вам требуется программная интеграция.

0 голосов
/ 10 апреля 2017

Вы можете использовать платную услугу, такую ​​как Kickbox , чтобы сделать это.

...