【发布时间】:2014-04-24 07:23:18
【问题描述】:
我想在不发送电子邮件的情况下验证电子邮件地址,因为当我们知道它是无效电子邮件时,我为什么要发送电子邮件
【问题讨论】:
我想在不发送电子邮件的情况下验证电子邮件地址,因为当我们知道它是无效电子邮件时,我为什么要发送电子邮件
【问题讨论】:
你不能……
您只能检查该域是否存在或不对该域名发出 DNS MX 请求,即便如此,这也取决于您的操作系统名称解析系统(除非您使用DNS 库);例如,您可能在一个非常严格控制的网络中,它不会让您访问 DNS,但会强制您使用 SMTP 中继(类似于在大量企业网络中您必须使用 HTTP 代理:您无法直接“访问网络”,因为您无法解析主机名。
即使您知道您的名称解析系统是可靠的,在您将 RCPT TO 发送到 SMTP 服务器之前,您也无法知道该用户是否真的存在。
现在,如果这是您要检查的邮件地址的语法,请使用 javax.mail 的 InternetAddress。
【讨论】:
你可以试试这样的模式:
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.
}
虽然这仅检查电子邮件格式,而不是 ping 服务器或执行任何其他复杂步骤来处理完整验证。
【讨论】: