Vérifier la validité d’un email avec Java

18 février 2009 at 23 h 47 min 1 commentaire

Un jour ou l’autre, à travailler dans le WEB, opn finit par devoir vérifier la validité d’un email. Comme on ne peut pas faire confiance à Javascript ou Flash pour vérifier les données envoyées par le client, il faut impérativement vérifier la validité des adresse mail coté serveur (au pire, vous risquez l’injection SQL). Voivi quelques pistes pour vérifier ces emails sur un serveur J2EE, ou sur n’importe quel conteneur de servlet (Tomcat,Jetty, Glassfish).

La solution de facilité

Voici un moyen simple rapide et à priori efficace d’effectuer cette vérification, à l’aide de la libraire apache « commons-validator »:

public static boolean validateEmailAddress(String votreEmail){
EmailValidator emailValidator = EmailValidator.getInstance();
return emailValidator.isValid(votreEmail);
}

Le fichier jar est disponible à cet endroit: http://commons.apache.org/validator/. A noter que ls utilitaires de validation Apache permettent de valider également les dates, ou encore les numéros de carte bleue, que ce soit en java, ou en javascript!

Prendre le taureau par les cornes, et chercher a implémenter la RFC 2822

C’est une usine à gaz, mais ca a été fait, en listant l’ensemble des tld(top level domains: .com, .net .org, etc) existants. C’est ce qui est réalisé ici:
http://www.velocityreviews.com/forums/t125158-java-email-validator.html

Implémenter sa propre regex simplifiée

On peut également essayer de construire soi-même sa fonction, en écrivant sa regex et en comparant la chaine de caractère à cette expression régulière. Suivre strictement les recommandations de la RFC 2822 est un vrai casse-tête (comme on a pu le voir un peu plus haut), et n’est pas forcément utile car l’email bien que valide n’est peut être pas réellement attribué a une personne !

Je vous conseille donc d’utiliser une regex simple, éprouvée, et testée:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

source: http://www.regular-expressions.info/email.html

Et voici l’implémentation correspondante:

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Console console = System.console();
if (console == null) {
System.err.println(« Probleme pour récupérer la console. »);
System.exit(1);
}
while (true) {
String a_tester = console.readLine(« Saisissez une adresse email à tester : « );
if(isEmailAdress(a_tester)) {
console.format(« OUI »);
}else{
console.format(« NON »);
}

}
}

public static boolean isEmailAdress(String email){
Pattern p = Pattern.compile(« ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$ »);
Matcher m = p.matcher(email.toUpperCase());
return m.matches();
}

}

Attention au caractère d’échappement (doublé dans la syntaxe Java) pour la déclaration du « . » dans la seconde partie de l’email!

Entry filed under: java. Tags: , , , .

Récupérer l’id (autoincrement) après un insert Sécuriser MySQL : création d’un utilisateur dédié à une base de donnée

Un commentaire Add your own

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Articles récents


%d blogueurs aiment cette page :