如何检查电子邮件是否确实存在

Sha*_*ali 1 java email android email-validation

我创建了一个表格,您必须在其中插入电子邮件地址。

我已经有一种验证方法。但是我需要确保电子邮件确实存在。

可能吗?

Gab*_*yel 5

在一般情况下,没有用户交互是不可能的。

您可以执行以下几项操作来验证电子邮件地址:

正则表达式

您可以使用正则表达式来验证电子邮件地址格式。它不能保证地址存在,但是至少您的用户输入格式正确。不过,使用正则表达式验证电子邮件地址并非易事,请参阅此处以获取困难。您可以在此处找到指南。

DNS查询

地址格式正确后,您可以通过简单的DNS查询来检查域名是否确实存在并具有关联的MX记录。如果不是,则该电子邮件显然无效。如果是这样,它仍然可以是任何有效的域,并且没有证据表明在该域上确实存在该名称指定的有效用户。

VRFY

如果该域存在,则可以向从该域的MX记录读取的smtp服务器发出SMTP VRFY命令。VRFY会告诉您用户名(@之前的部分)是否是该服务器上的有效电子邮件地址。需要注意的是,某些服务器不会告诉您真相并拒绝所有用户名或不执行VRFY命令,因为这存在安全风险(在许多情况下,电子邮件帐户是服务器的有效用户名,因此这将允许用户名枚举)。

因此,如果VRFY命令告诉您该地址有效,则很有可能确实如此。如果它告诉您无效或在SMTP服务器上未实现VRFY,则基本上没有任何信息。因此,您可能根本不想这样做。

关于此的更多信息在这里这里(以及许多其他信息)。

发送确认邮件

最终,您应该将带有一次性令牌的确认电子邮件发送到给定的电子邮件地址,并将该令牌存储在数据库中以供将来参考。如果用户可以单击已发送电子邮件中的链接(即可以将令牌发回),则他将证明该电子邮件地址有效并且实际上属于他。