检查有效的电子邮件地址

时间:2010-04-13 07:38:43

标签: php

我正在运营一个拥有超过6万注册用户的网站。每周通过电子邮件向这些用户发送通知,现在我注意到一些邮件地址不再存在,例如。域名地址有效,但电子邮件名称en asdas @不再有效,因为此人不再在公司工作等等。现在我正在循环数据库并进行一些正则表达式检查并检查MX记录是否存在于以下两个职能

function verify_email($email){

    if(!preg_match('/^[_A-z0-9-]+((\.|\+)[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0-9-]+)*(\.[A-z]{2,4})$/',$email)){
        return false;
    } else {
        return true;
    }
}

// Our function to verify the MX records
function verify_email_dns($email){

    list($name, $domain) = split('@',$email);

    if(!checkdnsrr($domain,'MX')){
        return false;
    } else {
        return true;
    }
}

如果电子邮件地址格式无效或域名不存在,我会删除用户帐户。如果域名有效且电子邮件地址格式正确,我是否可以使用任何方法检查电子邮件地址是否仍然存在?例如,abc@test.com不再存在,但test.com是有效的域名。

注意:如果邮件发送给用户并且电子邮件地址不再存在,我会在收件箱中收到一封电子邮件,每天发送1000封邮件,这是我要避免的。

1 个答案:

答案 0 :(得分:5)

标准方法是连接到远程邮件服务器并向其发送VRFY命令。但是,有些服务器不允许这样做,因为它使垃圾邮件发送者更容易找到有效的电子邮件地址。您也可以尝试向其发送RCPT TO命令(如果地址无效,您将得到550响应),但如果您执行此操作太多次,他们往往会阻止您,出于同样的原因

如果您的收件箱中已经收到退回的电子邮件,您似乎可以解析这些邮件并自动从列表中删除导致投放失败的人