如何在不使用java发送任何邮件的情况下检查域中是不是存在电子邮件ID
Posted
技术标签:
【中文标题】如何在不使用java发送任何邮件的情况下检查域中是不是存在电子邮件ID【英文标题】:how to check that the email id exist in domain without sending any mails using java如何在不使用java发送任何邮件的情况下检查域中是否存在电子邮件ID 【发布时间】:2012-11-07 08:05:24 【问题描述】:有什么方法可以验证邮箱在域中的位置吗?
我有以下功能:它只检查有效域,但我需要检查域中的有效电子邮件地址而不发送任何邮件。
public boolean isValidEmailAddress(String email)
boolean result = true;
try
InternetAddress emailAddr = new InternetAddress(email);
emailAddr.validate();
catch (AddressException ex)
result = false;
return result;
【问题讨论】:
您是指来自您内部组织的电子邮件吗?如果是这样,了解使用的邮件服务器会很有用。 【参考方案1】:这是一个可以进行多种类型验证的源代码,我已经使用了很多年了:
http://www.rgagnon.com/javadetails/java-0452.html
注意:请参阅页面中的函数 isAddressValid() 进行完整验证。
【讨论】:
感谢 Alexandre Lavoie 的回复。我提到了您的链接,它仅检查有效域但不检查有效电子邮件地址。 函数 isAddressValid() 做所有的测试,也尝试连接到@Brian Agnew 告诉的 SMTP 服务器。但谨慎使用,它并不总是有效!通常我只验证该域中的电子邮件语法、域存在和 MX 存在。【参考方案2】:听起来你需要SMTP VRFY command:
此命令将请求接收 SMTP 服务器验证 给定的电子邮件用户名是有效的。 SMTP 服务器将回复 用户的登录名。这个功能可以在sendmail中关闭 因为允许它可能是一个安全漏洞。可以使用 VRFY 命令 探测系统上的登录名。请参阅下面的安全部分 有关关闭此功能的信息。
请注意上面的安全问题。
【讨论】:
感谢 Brian Agnew 的回复。但是如何在 java 函数中使用这个命令。 您可以在您的 SMTP 服务器上创建一个到端口 25 的连接(尝试使用 telnet),然后执行“VRFY 地址”以上是关于如何在不使用java发送任何邮件的情况下检查域中是不是存在电子邮件ID的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Java 的情况下压缩 .csv 文件并在电子邮件中附加 Oracle plsql
如何在不发送消息的情况下在 Android 中打开默认电子邮件客户端?