java - 验证电子邮件地址而不考虑域

标签 java jakarta-mail

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

举个例子,如果我给

someone@gmail.com

someone@yahoo.com

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

最佳答案

除了发送电子邮件和检查退回邮件外,您通常无法验证给定地址对域是否有效。

过去,一些电子邮件服务器支持这种类型的查询,但垃圾邮件发送者迅速滥用它,因此很久以前就取消了该功能。

您可以通过例如验证域是否有效进行 DNS 查找并查找至少一个 MX 记录(MX 表示不仅域有效,而且在 DNS 中输入了邮件交换器)。

确定地验证输入字符串是否符合有效电子邮件地址的格式并非易事。参见 this question进行详细讨论。

更新

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

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

RegEx example from MSDN 我自己的单元测试表明它对有效(但肯定不常见)的电子邮件地址同时给出了误报和误报。

Wikipedia article on email addresses提供有效电子邮件地址格式的重要概述,并提供对适当 RFC 的引用。

关于java - 验证电子邮件地址而不考虑域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7412347/

相关文章:

java - 暴力破解密码锁

java - ViewPager - 错误

java - 无法从java程序: Unable to relay for abc@wipro. com发送电子邮件

java - 邮件发送异常 : Failed messages: com. sun.mail.smtp.SMTPSendFailedException

java - 在 Java Web 应用程序中发送电子邮件

java - Android Studio 无法检测到 JDK7 或更新版本

java - 如何使用 Jackcess 删除 (DROP) Access 表

java - 使用 javamail 设置 header 顺序

java - 导入org.springframework.mail无法解析

java - 仅设置如果依赖于Gradle插件任务