我创建了一个表单,您必须在其中插入电子邮件地址。
我已经有了验证方法。但我需要确保电子邮件确实存在。
有可能吗?
答案 0 :(得分:4)
在一般情况下,没有用户互动就无法实现。
您可以采取一些措施来验证电子邮件地址:
您可以使用正则表达式验证电子邮件地址格式。它不保证地址存在,但至少您的用户输入将很好地形成。但是,通过正则表达式验证电子邮件地址并不简单,请参阅here以了解困难。您可以找到指南here。
一旦地址格式正确,您可以使用简单的DNS查询检查域名是否实际存在并且具有关联的MX记录。如果没有,则电子邮件显然无效。如果是,它仍然可以是任何有效域,并且没有证据表明该域上实际存在指定名称的有效用户。
如果域存在,您可以向从域的MX记录中读取的smtp服务器发出SMTP VRFY命令。 VRFY将告诉您用户名(@之前的部分)是否是该服务器上的有效电子邮件地址。需要注意的是,某些服务器不会告诉您实际情况并拒绝所有用户名或未实施VRFY命令,因为它存在安全风险(在许多情况下,电子邮件帐户是服务器的有效用户名,因此这将允许用户名枚举)。
因此,如果VRFY命令告诉您地址有效,那么很可能它确实存在。如果它告诉您它无效或者SMTP服务器上没有实现VRFY,则基本上没有获得任何信息。因此,您可能根本不想这样做。
有关此内容的更多信息,请here和here(以及其他许多内容)。
最终,您应该向给定的电子邮件地址发送带有一次性令牌的确认电子邮件,并将该令牌存储在您的数据库中以供将来参考。如果用户可以单击发送的电子邮件中的链接(即可以发回令牌),则证明该电子邮件地址有效且实际上属于他。