Validar e-mail em Java

Postado em por Wolmir Cezer Garbin em Java | 71 Visualizações
Última atualização em:

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.

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

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.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar