我想验证电子邮件地址而不发送电子邮件,因为当我们知道电子邮件无效时,为什么我发送电子邮件
答案 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.
}
虽然这只检查电子邮件格式,但不检查服务器或执行任何其他复杂步骤来处理完整验证。