繁体   English   中英

Java - 使用InternetAddress验证电子邮件

[英]Java - validate email with InternetAddress

我有这个方法:

public static boolean isValidEmailAddress(String email) {
       boolean result = true;
       try {
          InternetAddress emailAddr = new InternetAddress(email);
          emailAddr.validate();
       } catch (AddressException ex) {
          result = false;
       }
       return result;
}

但是这给了我这个例外:

java.lang.NullPointerException:javax.mail.internet.Address.internet.Address。地址中的javax.mail.internet.AddressParser.tokenizeAddress(AddressParser.java:645),地址为javax.mail.internet.InternetAddress。(Internet地址,地址:Pasperser.pava:113)。 .java:70)在javax.mail.internet.InternetAddress。(InternetAddress.java:61)的controller.CtrlUser.isValidEmailAddress(CtrlUser.java:166),在controller.CtrlSeller.register(CtrlSeller.java:41)的testController上。 Ctrl.SellerUnitTestCase.testRegister(CtrlSellerUnitTestCase.java:41)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25)在org.junit.internal.runners.model的org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:45)的java.lang.reflect.Method.invoke(Method.java:597)中。 org.junit.runners.model上的ReflectiveCallable.run(ReflectiveCallable.java:15) 在。org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java)的org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)中的.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) :28)org.junit.runners.statements.RunAfters.evaluate(RunAfters.java:30)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)org.junit.runners.BlockJUnit4ClassRunner上的org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java :)。 runChild(BlockJUnit4ClassRunner.java:68)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:231)org.junit.runners。 ParentRunner $ 1.schedule(ParentRunner.java:60)在org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)....

它适用于我 - 检查您是否实际传递了一个有效的字符串。 您似乎发送了null作为您的电子邮件参数

确保您传递的email参数不为null

请尝试以下代码:

java.net.IDN.toASCII    

public static boolean isValidEmail(String email) {
    boolean result = true;
    try {
        InternetAddress emailAddr = new InternetAddress(java.net.IDN.toASCII(email));
        emailAddr.validate();
    } catch (AddressException ex) {
        result = false;
    }
    System.out.println("==> "+result+" : "+email);
    return result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM