[validadores] - Email - tem que ficar de olho

5 respostas
jaboot

Considerando o seguinte endereço de e-mail: [email removido]
Utilizando os validadores commons da apache, e o javax.mail

Tendo o seguinte código para teste:
package br.com.empresa.teste;

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

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

public class EmailTeste {
	
	public static void main(String[] args) {
		EmailTeste et = new EmailTeste();
		et.testaEmail();
		EmailTeste.isValidEmailAddress("[email removido]");
	}
	
	private void testaEmail() {
		if (!EmailValidator.getInstance().isValid("[email removido]")) {
			System.out.println("não passou");
		}
	}
	
	public static boolean isValidEmailAddress(String email) {
		boolean result = true;
		try {
			InternetAddress emailAddr = new InternetAddress(email);
			emailAddr.validate();
		} catch (AddressException ex) {
			result = false;
		}
		return result;
	}
	
}
Resultado: o commons considera que [color=darkred]não é[/color] válido o javax considera válido

De acordo com a wikipedia (http://en.wikipedia.org/wiki/Email_address#Local_part), não diz nada que um e-mail NÃO pode começar com underscore.
Isso é o problema de cada um seguir um padrão. Ou é bug mesmo.

5 Respostas

Cerjr

Cara, geralmente para validar um email eu utilizo regex, assim caso precise alterar algum comportamento na validação
é bem simples… e referente a expressões regulares tem bastante material na internet com este tipo de validação.

jaboot

Cerjr:
Cara, geralmente para validar um email eu utilizo regex, assim caso precise alterar algum comportamento na validação
é bem simples… e referente a expressões regulares tem bastante material na internet com este tipo de validação.

É… e daí tem que confiar no padrão que o cara utilizou quando criou o regex… não, obrigado, prefiro ficar com as libs mais conhecidas.

Hebert_Coelho

Cerjr:
Cara, geralmente para validar um email eu utilizo regex, assim caso precise alterar algum comportamento na validação
é bem simples… e referente a expressões regulares tem bastante material na internet com este tipo de validação.

Sempre faço o mesmo.

jaboot:
Cerjr:
Cara, geralmente para validar um email eu utilizo regex, assim caso precise alterar algum comportamento na validação
é bem simples… e referente a expressões regulares tem bastante material na internet com este tipo de validação.

É… e daí tem que confiar no padrão que o cara utilizou quando criou o regex… não, obrigado, prefiro ficar com as libs mais conhecidas.

Aí você cria o seu regex! O.o
Como o Cerjr disse, é facil criar um regex e tem muito material na net.

M

validar email so serve para ver se a pessoa nao digitou no campo errado …

Digitar um email fake é a coisa mais facil e comum que existe, a unica coisa que funciona é enviar email com validação de ativação de conta …

drsmachado

mcarabolante:
validar email so serve para ver se a pessoa nao digitou no campo errado …

Digitar um email fake é a coisa mais facil e comum que existe, a unica coisa que funciona é enviar email com validação de ativação de conta …


De fato.
Seguindo as definições da wikipedia (???), [email protected] é um endereço válido.
A idéia de usar regex me parece bem mais adequada, pois, eu crio o mesmo com base nas regras de negócio específicas às quais o meu sistema estará respondendo.

Criado 28 de junho de 2012
Ultima resposta 28 de jun. de 2012
Respostas 5
Participantes 5