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.
Última atualização em: | 22859 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.