Quelles sont les bonnes bibliothèques de validation d'adresses e-mail pour Java? Existe-t-il des alternatives au validateur des communs ?
Réponses
Trop de publicités?L'utilisation du package de messagerie Java officiel est la plus simple:
public static boolean isValidEmailAddress(String email) {
boolean result = true;
try {
InternetAddress emailAddr = new InternetAddress(email);
emailAddr.validate();
} catch (AddressException ex) {
result = false;
}
return result;
}
Réponse tardive, mais je pense que c'est simple et digne:
public boolean isValidEmailAddress(String email) {
String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
java.util.regex.Pattern p = java.util.regex.Pattern.compile(ePattern);
java.util.regex.Matcher m = p.matcher(email);
return m.matches();
}
Cas de test :
À des fins de production, les validations de noms de domaine doivent être effectuées sur le réseau.
Si vous essayez de faire une validation de formulaire reçu par le client, ou tout simplement un bean validation - keep it simple. Il est préférable de faire une lâche l'email de validation plutôt que de faire une stricte et de rejeter certaines personnes (par exemple, quand ils essaient de registre de votre service web). Avec presque rien autorisés dans le nom d'utilisateur de la partie de l'e-mail et ainsi de nombreux nouveaux domaines ajoutés littéralement tous les mois (par exemple .entreprise, .entreprise, .de l'immobilier), il est plus sûr de ne pas être restrictif:
Pattern pattern = Pattern.compile("^.+@.+\\..+$");
Matcher matcher = pattern.matcher(email);
Les Hazlewood a écrit une classe de validateur e-mail compatible RFC 2822 très complet à l’aide d’expressions régulières Java. Vous pouvez le trouver à http://www.leshazlewood.com/?p=23. Cependant, son souci du détail (ou la mise en oeuvre Java RE) conduit à l’inefficacité - lire les commentaires sur une fois l’analyse des adresses longues.