Как я могу проверить адрес электронной почты в java

Я пытаюсь написать условие if, которое проверяет, является ли адрес электронной почты, введенный пользователем, действительным адресом электронной почты.

Как я могу это написать?

Пожалуйста, я хочу простой способ, а не сложный

мой метод

  public void setStudentEMail(String StudentEMail)
{
     this.StudentEMail=StudentEMail;    
}
 
  public String getStudentEMail()
{
    return this.StudentEMail;
}

person Haneen    schedule 03.04.2021    source источник
comment
Используете ли вы сервер, совместимый с JakartaEE? Если это так, мы можем использовать проверку компонентов и @Email   -  person Turing85    schedule 03.04.2021
comment
Отвечает ли это на ваш вопрос? Какой лучший метод проверки адреса электронной почты Java?   -  person Davide    schedule 03.04.2021
comment
нет не пользуюсь   -  person Haneen    schedule 03.04.2021


Ответы (2)


Вы можете использовать официальный почтовый пакет Java https://javaee.github.io/javamail/. Он имеет встроенный метод проверки адреса электронной почты. Вам не нужно поддерживать регулярное выражение самостоятельно.

public boolean isValidEmail(String email) {
   boolean valid = true;
   try {
      InternetAddress emailAddr = new InternetAddress(email);
      emailAddr.validate();
   } catch (AddressException e) {
      valid = false;
   }
   return valid;
}
person aatwork    schedule 03.04.2021
comment
Сайт, на который вы ссылаетесь, устарел, самый новый - после ребрендинга в JakartaMail и перехода в Eclipse Foundation - на eclipse-ee4j.github.io/mail - person Mark Rotteveel; 04.04.2021

Простой, но не идеальный способ

public boolean isValid(String email) {
    if (email == null) return false;
    int at = email.indexOf("@");
    if (at < 0) return false;
    int dot = email.lastIndexOf(",");
    return at < dot;
}

Однако вам понадобится гораздо более сложный подход, чтобы это работало идеально, например

public static boolean isValid(String email)
{
    String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\."+
                        "[a-zA-Z0-9_+&*-]+)*@" +
                        "(?:[a-zA-Z0-9-]+\\.)+[a-z" +
                        "A-Z]{2,7}$";
                          
    Pattern pat = Pattern.compile(emailRegex);
    if (email == null)
        return false;
    return pat.matcher(email).matches();
}

https://www.geeksforgeeks.org/check-email-address-valid-not-java/

person Lajos Arpad    schedule 03.04.2021
comment
Локальная часть электронного письма также может содержать много других символов в соответствии с RFC. 5322: [a-zA-Z0-9!#$%&'*+/=?^_{|}~-]. Of course in practice many sites fail with characters such as $` или ' в локальной части. - person Piotr P. Karwasz; 04.04.2021
comment
Но в вопросе прямо указано Хочу простой способ, а не сложный!!! Написание кода для проверки адресов электронной почты вместо использования проверенного API кажется неуместным (если только нет особых требований к проверке). - person skomisa; 04.04.2021