如何检查电子邮件是否确实存在
How to check if email actually exists
我创建了一个表格,您必须在其中插入电子邮件地址。
我已经有了验证方法。但我需要确保电子邮件确实存在。
可能吗?
在一般情况下,没有用户交互是不可能的。
您可以执行一些操作来验证电子邮件地址:
正则表达式
您可以使用正则表达式来验证电子邮件地址格式。它不保证地址存在,但至少您的用户输入格式正确。虽然通过正则表达式验证电子邮件地址并不简单,请参阅 here for difficulties. You can find guidelines here.
DNS 查询
地址格式正确后,您可以通过简单的 DNS 查询来检查域名是否实际存在以及是否具有关联的 MX 记录。如果不是,则电子邮件显然无效。如果是,它仍然可以是 任何 有效域,并且没有证据表明该域上确实存在指定名称的有效用户。
VRFY
如果域存在,您可以向smtp 服务器发出SMTP VRFY 命令,从域的MX 记录中读取。 VRFY 会告诉您用户名(@ 之前的部分)是否是该服务器上的有效电子邮件地址。需要注意的是,某些服务器不会告诉您真相并拒绝所有用户名或不执行 VRFY 命令,因为它存在安全风险(在许多情况下,电子邮件帐户是服务器的有效用户名,因此这将允许用户名枚举)。
因此,如果 VRFY 命令告诉您地址有效,则很有可能它确实有效。如果它告诉您它无效或 SMTP 服务器上未实现 VRFY,您基本上不会获得任何信息。因此,您可能根本不想这样做。
有关这方面的更多信息 here and here(以及许多其他信息)。
发送确认邮件
最后,您应该向给定的电子邮件地址发送一封带有一次性令牌的确认电子邮件,并将该令牌存储在您的数据库中以供将来参考。如果用户可以在发送的邮件中点击一个link(即可以发回token),则证明该邮件地址有效,确实属于他。
我创建了一个表格,您必须在其中插入电子邮件地址。
我已经有了验证方法。但我需要确保电子邮件确实存在。
可能吗?
在一般情况下,没有用户交互是不可能的。
您可以执行一些操作来验证电子邮件地址:
正则表达式
您可以使用正则表达式来验证电子邮件地址格式。它不保证地址存在,但至少您的用户输入格式正确。虽然通过正则表达式验证电子邮件地址并不简单,请参阅 here for difficulties. You can find guidelines here.
DNS 查询
地址格式正确后,您可以通过简单的 DNS 查询来检查域名是否实际存在以及是否具有关联的 MX 记录。如果不是,则电子邮件显然无效。如果是,它仍然可以是 任何 有效域,并且没有证据表明该域上确实存在指定名称的有效用户。
VRFY
如果域存在,您可以向smtp 服务器发出SMTP VRFY 命令,从域的MX 记录中读取。 VRFY 会告诉您用户名(@ 之前的部分)是否是该服务器上的有效电子邮件地址。需要注意的是,某些服务器不会告诉您真相并拒绝所有用户名或不执行 VRFY 命令,因为它存在安全风险(在许多情况下,电子邮件帐户是服务器的有效用户名,因此这将允许用户名枚举)。
因此,如果 VRFY 命令告诉您地址有效,则很有可能它确实有效。如果它告诉您它无效或 SMTP 服务器上未实现 VRFY,您基本上不会获得任何信息。因此,您可能根本不想这样做。
有关这方面的更多信息 here and here(以及许多其他信息)。
发送确认邮件
最后,您应该向给定的电子邮件地址发送一封带有一次性令牌的确认电子邮件,并将该令牌存储在您的数据库中以供将来参考。如果用户可以在发送的邮件中点击一个link(即可以发回token),则证明该邮件地址有效,确实属于他。