验证电子邮件地址,不论域名如何

时间:2011-09-14 06:51:18

标签: java javamail

无论域名如何,如何验证给定的电子邮件地址都是正确的。

如果我给出了一个例子

someone@gmail.com

someone@yahoo.com

同样明智的是,如果我提供任何地址,系统必须能够说出域中存在给定地址

1 个答案:

答案 0 :(得分:7)

您通常无法验证某个地址是否对某个域有效,而不是发送电子邮件和检查退回。

在当天,一些电子邮件服务器支持这种类型的查询,但垃圾邮件发送者立即滥用它,因此很久以前就删除了该功能。

您可以通过以下方式验证域是否为有效域。进行DNS查找并查找至少一条MX记录(MX表示该域名无效,但在DNS中输入了邮件交换器。)

确定输入字符串是否符合有效电子邮件地址的格式是非常重要的。有关详细讨论,请参阅this question

更新

有一些常用的验证器可能会有所帮助,尽管它们在所有情况下都没有正确执行验证,例如

Apache Commons EmailValidator (文档声明它没有捕获所有情况,包括不检查顶级域是否存在)。

RegEx example from MSDN 我自己的单元测试表明,它为有效(但肯定不常见)的电子邮件地址提供了漏报和误报。

Wikipedia article on email addresses提供了有效电子邮件地址格式的精彩概述,并提供了对相应RFC的参考。