我正在尝试在java中练习异常处理,并通过运行一些(in)有效的电子邮件地址并验证它们来实现。到目前为止,我能够打印出未经验证的那些,但我正在寻找一种方法来打印经过验证的那个。如果我在try块中打印,john.doe.gmail.com地址会因为某些原因打印出来进行验证。
有人会提出什么建议吗?
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
public class AdressChecker {
public static void main(String args[]) {
String toTest[] =
{"john.doe@gmail.com", "john.doe.gmail.com", "john.doe@", "@gmail.com"};
System.out.println("Addresses to be verified");
for (String x : toTest)
System.out.println(x);
for (String s : toTest) {
try {
InternetAddress emailAddr = new InternetAddress(s);
emailAddr.validate();
} catch (AddressException ex) {
System.out.println(s + " is not a valid E-Mail Address.");
}
}
}
}
现在工作。输出是:
Addresses to be verified
john.doe@gmail.com
john.doe.gmail.com
john.doe@
@gmail.com
john.doe@gmail.com is a valid E-Mail Address.
john.doe.gmail.com is not a valid E-Mail Address.
john.doe@ is not a valid E-Mail Address.
@gmail.com is not a valid E-Mail Address.
BUILD SUCCESSFUL (total time: 0 seconds)
答案 0 :(得分:0)
您可以在println
来电后添加.validate()
语句。
由于它会在地址无效时引发异常,因此不会执行println
调用。
答案 1 :(得分:0)
尝试在emailAddr.validate()
行检查后打印电子邮件:
for (String s : toTest)
{
try
{
InternetAddress emailAddr = new InternetAddress(s);
emailAddr.validate();
System.out.println(s + " is a valid E-Mail Address.");
}
catch (AddressException ex)
{
System.out.println(s + " is not a valid E-Mail Address.");
}
}
答案 2 :(得分:0)
使用InternetAddress.validate()
方法,不检查仅电子邮件地址的有效性。 RFC 822(第6.1节)中的语法比我们今天通常用作电子邮件地址的地址要广泛得多。考虑像ssh
这样的工具,它们也将互联网地址作为参数,它们看起来像:user@localhost
。这会传递InternetAddress
验证,因为它是有效的Internet地址。并且在某些网络方案中也可以是有效的电子邮件地址。
所以你会得到这样的答案吗?
Addresses to be verified
john@gmail is a valid E-Mail Address
john@gmail.coooooooooooooom is a valid E-Mail Address
john+1@gmail.com is a valid E-Mail Address
john+2@gmail.com is a valid E-Mail Address
john+3000@gmail.com is a valid E-Mail Address
这取决于你的应用程序中非常的场景。有时你想:
john+1@gmail.com
与Gmail的john@gmail.com
相同)cooooooom
)(直到new generic top level domains真正存在)如果您的电子邮件地址必须只是在网络上使用的有效电子邮件地址(例如拥有域名和子域名),我建议您使用正则表达式。为此你有很多答案: