Php 检查有效的电子邮件地址

Php 检查有效的电子邮件地址,php,Php,我正在运行一个拥有6万多注册用户的网站。每周通过电子邮件向这些用户发送通知,现在我注意到一些邮件地址已经不存在了,例如,域名是有效的,但电子邮件名en asdas@不再有效,因为此人不再在公司工作了,等等。现在我在数据库中循环,做一些正则表达式检查,检查MX记录是否存在,包括以下两个功能 function verify_email($email){ if(!preg_match('/^[_A-z0-9-]+((\.|\+)[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0

我正在运行一个拥有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封,这是我试图避免的。

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


如果您的收件箱中已收到被退回的电子邮件,您似乎可以解析这些邮件,并自动从列表中删除导致传递失败的人。标准方法是连接到远程邮件服务器并向其发送
VRFY
命令。然而,一些服务器不允许这样做,因为这使垃圾邮件发送者更容易找到有效的电子邮件地址。您也可以尝试向它发送
RCPT TO
命令(如果地址无效,您将得到550响应),但是如果您多次这样做,出于同样的原因,它们往往会阻止您


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

请注意,您正在使用的正则表达式已经拒绝了大量有效的电子邮件地址。。。我会忽略域检查,这不值得,而且在发送邮件时也会这样做。我认为你能做的最好的事情是自动检查你的收件箱中是否有被反弹的邮件,并从数据库中删除这些条目。请注意,你在那里使用的正则表达式已经拒绝了大量有效的电子邮件地址。。。我会忽略域检查,这不值得,而且在发送邮件时无论如何都会这样做。我认为你能做的最好的事情是自动检查收件箱中是否有被退回的邮件,并从数据库中删除这些条目。我也有答案,但你的答案更好。我还建议了一个常规的选择加入机制(一封一年左右回复一次的邮件),但这有点超出了问题的范围。我也有一个答案,但你的答案更好。我还建议建立一个定期的选择加入机制(一封一年左右回复一次的邮件),但这有点超出了问题的范围。