如何检查电子邮件是不是确实存在
Posted
技术标签:
【中文标题】如何检查电子邮件是不是确实存在【英文标题】:How to check if email actually exists如何检查电子邮件是否确实存在 【发布时间】:2017-04-01 16:50:55 【问题描述】:我创建了一个表单,您必须在其中插入电子邮件地址。
我已经有一个验证方法。但我需要确保电子邮件确实存在。
有可能吗?
【问题讨论】:
是的,看***.com/questions/4776907/… 我同意这个答案,即确保电子邮件地址真实且属于提交它的用户的唯一方法是向该电子邮件地址发送验证链接并要求用户在继续之前单击该链接。我在我的网站上使用它并获得零垃圾邮件。但是,我也很少获得 cmets,因此请注意,对访问者进行此类验证过程有很强的抑制作用。 【参考方案1】:在一般情况下,没有用户交互是不可能的。
您可以做一些事情来验证电子邮件地址:
正则表达式
您可以使用正则表达式来验证电子邮件地址格式。它不保证地址存在,但至少您的用户输入格式正确。不过,通过正则表达式验证电子邮件地址并不简单,请参阅here 了解困难。您可以找到指南here。
DNS 查询
地址格式正确后,您可以通过简单的 DNS 查询检查该域名是否实际存在并具有关联的 MX 记录。如果不是,则电子邮件显然无效。如果是这样,它仍然可以是任何有效域,并且没有证据表明该域上确实存在指定名称的有效用户。
VRFY
如果域存在,您可以向从域的 MX 记录读取的 smtp 服务器发出 SMTP VRFY 命令。 VRFY 将告诉您用户名(@ 之前的部分)是否是该服务器上的有效电子邮件地址。需要注意的是,某些服务器不会告诉您真相并拒绝所有用户名或不执行 VRFY 命令,因为这是一个安全风险(在许多情况下,电子邮件帐户是服务器的有效用户名,因此这将允许用户名枚举)。
因此,如果 VRFY 命令告诉您地址有效,则很有可能它确实有效。如果它告诉您它无效或 SMTP 服务器上未实现 VRFY,则您基本上没有获得任何信息。因此,您可能根本不想这样做。
关于这方面的更多信息是here 和here(以及许多其他人)。
发送确认邮件
最终,您应该向给定的电子邮件地址发送一封带有一次性令牌的确认电子邮件,并将该令牌存储在您的数据库中以供将来参考。如果用户可以点击发送的邮件中的一个链接(即可以将token发回),他就证明了该邮件地址是有效的,并且它实际上是属于他的。
【讨论】:
非常感谢!我能得到的最佳答案。我会选择最后一个似乎最舒服的选项。这是一个非常有用的答案,再次感谢! :)以上是关于如何检查电子邮件是不是确实存在的主要内容,如果未能解决你的问题,请参考以下文章
如何检查MySQL中是不是存在一行? (即检查电子邮件是不是存在于 MySQL 中)