【问题标题】:Simple SMTP email validation function for php? Also, is it worth it?php的简单SMTP电子邮件验证功能?另外,值得吗?
【发布时间】:2009-05-31 09:26:10
【问题描述】:

有没有人在 PHP 中通过 SMTP 验证电子邮件地址的好功能? 另外,值得吗?它会减慢我的服务器速度吗?

--> 编辑:我指的是这样的东西:

http://onwebdevelopment.blogspot.com/2008/08/php-email-address-validation-through.html

这是为了补充对电子邮件地址语法的验证。

虽然看起来很复杂,但我希望有一种更简单的方法。

【问题讨论】:

  • SMTP 是一种邮件传输协议。 “通过 SMTP 验证电子邮件地址”是什么意思?请澄清您的问题。

标签: php email


【解决方案1】:

如果你想检查域中是否有邮件交换器,你可以使用这样的东西:

/*checks if email is well formed and optionally the existence of a MX at that domain*/
function checkEmail($email, $domainCheck = false)
{
    if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
                   '\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
        if ($domainCheck && function_exists('checkdnsrr')) {
            list (, $domain)  = explode('@', $email);
            if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                return true;
            }
            return false;
        }
        return true;
    }
    return false;
}

用法:

$validated = checkEmail('foo@gmail.com', true);

【讨论】:

    【解决方案2】:

    这就是我相信您正在寻找的东西。它使用 SMTP 服务器进行验证。它显示了 PHP 代码。 http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/.

    【讨论】:

      【解决方案3】:

      Here's such a code,取自 drupal 模块 email_verify。那里有几个 Drupal 特定的调用,但为通用 PHP 函数清理它不应该花费很多时间:

      另请注意,一些网络主机会阻止传出端口 25,因为它主要由垃圾邮件发送者使用。如果您的宿主正在练习这样的块,您将无法使用这种形式的验证。

      【讨论】:

        【解决方案4】:

        欢迎您使用我的免费 PHP 函数 is_email() 来验证地址。它可用here

        它将确保地址完全符合 RFC 5321。它还可以选择检查域是否实际存在。

        您不应依赖验证器来告诉您用户的电子邮件地址是否真实存在:一些 ISP 会向其用户提供不合规的地址,尤其是在不使用拉丁字母的国家/地区。更多关于电子邮件验证的文章在这里:http://isemail.info/about

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-09
          • 2014-04-15
          • 2011-03-11
          • 2011-04-22
          • 2012-01-05
          • 2013-09-08
          • 1970-01-01
          • 2014-02-15
          相关资源
          最近更新 更多