如何在不发送任何内容的情况下检查电子邮件地址是否有效?

时间:2010-06-11 17:22:06

标签: email

我有一个客户,他有5000封来自旧列表的电子邮件,他希望将其服务推广到。他想知道列表中的哪些电子邮件仍然有效。我想为他检查一下 - 不随机发送5K电子邮件,然后被列为垃圾邮件发送者或其他东西。想法?

7 个答案:

答案 0 :(得分:9)

您可以通过SMTP验证电子邮件,而无需发送实际的电子邮件。

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

您也可以发送电子邮件,并检查退回。

答案 1 :(得分:6)

bucabay's回答是前进的方向。这样的库本质上是检查指定域(A,MX或AAAA)上(邮件)服务器的现有DNS记录。之后,它会执行所谓的回调验证。这就是你连接到邮件服务器的地方,告诉你要发送到特定的电子邮件地址,看看他们是否说好。

对于回拨验证,您应该注意灰名单服务器对所有内容都说好,所以在没有实际发送电子邮件的情况下,没有100%保证可能。这是我手动执行此操作时使用的一些代码。它是来自here的电子邮件地址解析器的补丁。

    #
    # 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;

答案 2 :(得分:3)

我认为你需要发送电子邮件才能找到答案。此外,这几乎就是垃圾邮件发送者,因此成为垃圾邮件发送者列表的原因。突然发送将帮助您隐藏这一事实。

答案 3 :(得分:2)

您必须至少向他们发送一次电子邮件。

  • 创建新的电子邮件列表。向旧列表发送一封电子邮件,其中包含需要单击的链接以继续接收消息(重新订阅)。
  • 向他们发送所有电子邮件,并在真实电子邮件帐户中收集所有回复退回邮件,然后从主列表中清除这些退回的电子邮件。
  • 向他们发送所有HTML电子邮件,其中一个图片是远程托管的,需要一个唯一的ID来请求您在每封电子邮件中设置的图像。当您的Web服务器将该图像返回到其客户端时,您可以将该电子邮件视为活动的。这称为web bug,仅在此人自动在其客户端中加载远程图像时才有效。

答案 4 :(得分:1)

https://github.com/kamilc/email_verifier是一个rubygem,它将检查MX记录是否存在以及SMTP服务器是否说该地址具有有效邮箱。

答案 5 :(得分:0)

您也可以使用Kickbox等付费服务来执行此操作。

答案 6 :(得分:0)

您可以考虑适合您的要求的MailboxValidator服务http://www.mailboxvalidator.com/。您可以获得批量计划,您可以在其中上传包含电子邮件列表的CSV文件,或者如果需要编程集成,则可以获取API计划。