Validar e-mail em Java

Veja neste post dois exemplos de código para validar endereço de e-mail em java, que apesar de simples pode ajudar em seu projeto.

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 2248 Visualizações

Trago neste post dois exemplos de código que você pode usar em seu projeto Java para validar se um endereço de e-mail é válido ou não.

Note que apenas faz a validação do endereço de e-mail em sí (padrão), não se o e-mail existe de fato ou não.

Validação de endereço de e-mail usando JavaMail API

O primeiro exemplo usa a classe InternetAddress que recebe em seu construtor o endereço de e-mail. Após ser criada a instãncia de InternetAddress usamos o método validate() o qual retorna uma exceção caso o endereço de e-mail seja inválido.

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

Particularmente prefiro esta forma de validação.


Para testar o código veja a classe abaixo:

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

public class ValidarEmailMail {

    public static void main(String[] args) {
        System.out.println( isValidEmailAddress("garbosoftware@gmail.com") );
        System.out.println( isValidEmailAddress("aaabbb@gmail.com") );
        System.out.println( isValidEmailAddress("invalido@com.br") );
        System.out.println( isValidEmailAddress("inv@lido@com.br") );
    }

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

Ao executar o resultado será:

true
true
true
false

Um ponto ruim deste método é que precisa ter o JavaMail API em seu projeto.

<dependency>
	<groupId>javax.mail</groupId>
	<artifactId>mail</artifactId>
	<version>1.4.7</version>
</dependency>

Validação de endereço de e-mail usando Expressão Regular

Outra forma de fazer a validação de endereço de e-mail é usando expressão regular.

Veja o exemplo do método a seguir:

public static boolean isValidEmailAddressRegex(String email) {
    boolean isEmailIdValid = false;
    if (email != null && email.length() > 0) {
        String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
        Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(email);
        if (matcher.matches()) {
            isEmailIdValid = true;
        }
    }
    return isEmailIdValid;
}

Esta alternativa não requer o uso do JavaMail API em seu projeto.

Vamos realizar o mesmo teste anterior usando este método. Veja:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ValidarEmailMail {

    public static void main(String[] args) {
        System.out.println( isValidEmailAddressRegex("garbosoftware@gmail.com") );
        System.out.println( isValidEmailAddressRegex("aaabbb@gmail.com") );
        System.out.println( isValidEmailAddressRegex("invalido@com.br") );
        System.out.println( isValidEmailAddressRegex("inv@lido@com.br") );
    }

    public static boolean isValidEmailAddressRegex(String email) {
        boolean isEmailIdValid = false;
        if (email != null && email.length() > 0) {
            String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
            Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(email);
            if (matcher.matches()) {
                isEmailIdValid = true;
            }
        }
        return isEmailIdValid;
    }
}

Ao executar o resultado será:

true
true
true
false

Conclusão

Ambas as formas funcionam para validação do endereço de e-mail, entre usar uma e outra é uma opção de gosto. Mesmo assim não será garantido que o endereço exista, mas já ajuda a prevenir erros.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.



Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!