Общий валидатор apache возвращает ложноположительный результат - PullRequest
0 голосов
/ 01 февраля 2019

При использовании общего валидатора электронной почты Apache, как показано ниже:

https://commons.apache.org/proper/commons-validator/apidocs/org/apache/commons/validator/routines/EmailValidator.html

возвращает ложный положительный результат для электронного письма, отформатированного как:

random@.com -> true
random.bla@gmail -> true

есть ли лучший способ проверить электронную почту?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Для "статической проверки" только может помочь / улучшить новейшая версия commons-validator .

см .: Какой метод проверки адресов электронной почты Java является лучшим?


Если вы действительно хотите проверить электронную почту - Конечно, вам нужно получить подтверждение:

  • сначала выполните статическую проверку (так же хорошокак вы / ваша библиотека)
  • затем отправьте электронное письмо:
    • со ссылкой для подтверждения идентификации, которую получатель должен «нажать» (http get!).
  • написать соответствующую конечную точку / сервлет / контроллер (http get), которая "завершает проверку".

см. Также: https://en.wikipedia.org/wiki/Closed-loop_authentication ...


0 голосов
/ 01 февраля 2019

Я думаю, что вы допустили ошибку где-то в своем коде, я протестировал EmailValidator и он работал, оба примера вернули false:

import org.apache.commons.validator.routines.EmailValidator;

public class TestMail {

public static void main(String[] args) {

    EmailValidator v = EmailValidator.getInstance();

    System.out.println(v.isValid("random@.com")); //false
    System.out.println(v.isValid("random.bla@gmail")); //false
}
}

Использование зависимости:

<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.4.0</version>
</dependency>
...