247 votes

Quelle est la meilleure méthode de validation d'adresse e-mail Java?

Quelles sont les bonnes bibliothèques de validation d'adresses e-mail pour Java? Existe-t-il des alternatives au validateur des communs ?

261voto

Aaron Davidson Points 1208

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;
}
 

134voto

Matthew Flaschen Points 131723

Apache Commons est généralement connu comme un projet solide. Gardez à l'esprit, cependant, vous devrez toujours envoyer un e-mail de vérification à l'adresse si vous voulez vous assurer que c'est un vrai e-mail, et que le propriétaire veut qu'il soit utilisé sur votre site.

71voto

Pujan Srivastava Points 964

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 :

entrez la description de l'image ici

À des fins de production, les validations de noms de domaine doivent être effectuées sur le réseau.

21voto

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);

5voto

Philip Points 182

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X