如何验证电子邮件地址是否存在?

5

有没有可能在C#中找出电子邮件地址是否存在的方法?

例如:我有一个类似于abcded@yahoo.com或asdf234@hotmail.com的电子邮件地址。如何进行验证?

6个回答

13

从前,互联网和SMTP邮件传输协议被发明出来。那是在大家都友善和蔼的好日子里,所以在SMTP协议中包含了一个命令用于验证电子邮件地址 - VRFY命令。

然而,黑暗降临到互联网上,并带来了垃圾邮件、蠕虫和其他恶意行为,因此互联网邮件服务器的系统管理员通过禁用VRFY命令来保护良好环境。

因此,简短的答案是:不可以。


7
最明显的方法是向邮件地址发送电子邮件,并要求收件人回复或点击链接。

1
不仅是最明显的方法...它也是证明注册用户接近所有者的唯一方式...假定电子邮件帐户没有遭到黑客攻击等情况。 - pearcewg

3
基本上,你无法做到。有些服务器支持查找(以验证特定用户是否存在),但对于Hotmail/Gmail来说,这是不可能的。邮件将会被退回。

3
通常情况下这是不可能的。这就是为什么许多网站要求您提供电子邮件地址以注册,并发送链接到该地址,您需要点击该链接以确认该地址属于您的电子邮件。

2

根本没有办法

如果是因为某些原因,例如需要验证才能注册,那么当您发送时,会有人回复。

你想做这个的原因是什么?


我正在创建一款电子邮件软件,它具有导入电子邮件的选项,因此我想知道是否可能以某种方式验证电子邮件。 - smartali89
@smartali89 为什么要验证整个电子邮件呢?它们可能是旧的,其中的任何地址都可能已经不存在了,但电子邮件本身并不会变得无效。如果由于一个地址(发件人/收件人)不再存在而导致无法将电子邮件导入客户端,我会非常沮丧 - 当我搜索文本等内容时,我仍然希望考虑所有这些电子邮件。 - undefined

0
我有点晚了,但这可能对某人有所帮助 现在你可以检查电子邮件是否存在。 以下是我目前在我的网站上使用的代码。你可以在C#中使用相同的API。
    if(isEmialExist("EMAIL_ADDRESS_THAT"))
{
    echo "email exists, real email";
}
else
{
    echo "email doesn't exist";
}


function isEmialExist($emailAddress)
{
    if (!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
     return false; //invalid format
    }
    //now check if email really exist
    $postdata = http_build_query(array('api_key' => 'YOUR_API_KEY', 'email' => $emailAddress ));
    $url = "https://email-validator.com/api/v1.0/json";
    $opts = array('http' => array( 'method'  => 'POST', 'header'  => 'Content-Type: application/x-www-form-urlencoded', 'content' => $postdata ));
    
    $context  = stream_context_create($opts);
    $result = file_get_contents($url, false, $context);
    $data = json_decode($result, false);
    return $data->is_exists;
}

你可以在这里找到更多详细信息。 https://email-validator.com/tutorial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接