如何验证服务器上的电子邮件而不发送电子邮件?

时间:2014-04-24 07:23:19

标签: java email

我想验证电子邮件地址而不发送电子邮件,因为当我们知道电子邮件无效时,为什么我发送电子邮件

2 个答案:

答案 0 :(得分:2)

你不能......

您只能检查域是否存在对域名发出DNS MX请求,即使这样,这也取决于您的操作系统名称解析系统(除非您使用纯Java,否则不能这样做使用DNS库);例如,您可能处于一个非常严格控制的网络中,该网络不会授予您访问DNS的权限,但会强制您使用SMTP中继(类似地,在大量企业网络中您必须使用HTTP代理:您无法直接访问网络,因为您无法解析主机名。

即使您知道您的名称解析系统是可靠的,但在将RCPT TO发送到SMTP服务器之前,您无法知道用户是否确实存在。

现在,如果这是您要检查的邮件地址的语法,请使用javax.mail' s InternetAddress

答案 1 :(得分:1)

您可以尝试这样的模式:

private static final Pattern mailPattern= Pattern.compile(
        "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
);

if (!mailPattern.matcher(email).matches()) {
    //TODO mail address is invalid.
}

虽然这只检查电子邮件格式,但不检查服务器或执行任何其他复杂步骤来处理完整验证。