Вопрос-ответ

What is the best Java email address validation method? [closed]

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



Какие хорошие библиотеки проверки адресов электронной почты для Java? Существуют ли какие-либо альтернативы commons validator?

Переведено автоматически
Ответ 1

Использовать официальный пакет электронной почты Java проще всего:

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

Apache Commons обычно известен как надежный проект. Однако имейте в виду, что вам все равно придется отправить электронное письмо с подтверждением на указанный адрес, если вы хотите убедиться, что это настоящее электронное письмо и что владелец хочет, чтобы оно использовалось на вашем сайте.


РЕДАКТИРОВАТЬ: Произошла ошибка, из-за которой он слишком ограничивал домен, из-за чего он не принимал действительные электронные письма из новых TLD.


Эта ошибка была исправлена 03 / 15 января в 02:48 в commons-validator версии 1.4.1


Ответ 3

Можно использовать Apache Commons validator, как упоминалось в других ответах.

pom.xml:

<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.1</version>
</dependency>

build.gradle:

compile 'commons-validator:commons-validator:1.4.1'

Импорт:

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

Код:

String email = "myName@example.com";
boolean valid = EmailValidator.getInstance().isValid(email);

и разрешить локальные адреса

boolean allowLocal = true;
boolean valid = EmailValidator.getInstance(allowLocal).isValid(email);
Ответ 4

Поздний ответ, но я думаю, что он прост и достоин внимания:

    public boolean isValidEmailAddress(String email) {
String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(ePattern);
java.util.regex.Matcher m = p.matcher(email);
return m.matches();
}

Тестовые примеры:

введите описание изображения здесь

Для производственных целей проверка доменного имени должна выполняться по сети.

java