IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

API permettant de vérifier des adresses mail valides ou pas


Sujet :

Composants Java

  1. #1
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut API permettant de vérifier des adresses mail valides ou pas
    Bonsoir,

    Je dois faire une application en Swing qui me permettra via des fichiers au format csv de tester les adresses mails d'une colonne afin de savoir si elles sont valide ou pas.

    Est-ce possible ?

    J'avoue que je part à l'aventure et j'ai besoin de piste concernant API.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Pas besoin d'API, un simple Pattern suffit :
    http://www.developpez.net/forums/d34...-email-valide/

    .. enfin, quand je dis "simple" c'est parce que d'autres ont déjà bien travaillé la question !
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas vraiment. En réalité, très peu de "méthodes pour tester la validité d'une adresse email" sont correctes. Et on peut imaginer une regex qui vérifie ça, mais elle serait monstrueusement longue.

    Cela vient principalement du fait qu'on ne sait pas trop se décider sur qu'est-ce que c'est, une adresse email valide.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La première question à te poser moussar, c'est "selon quel critère" on testera la validité

    nom de domaine existant?
    présence d'un @ obligatoire?
    utilisateur existant sur ce domaine?
    tentative d'envoi d'un email fructueuse?

  5. #5
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Merci pour vos nombreuses réponses à tous .

    En faite, j'explique le contexte:

    Des télévendeurs de nos prestataires saisissent des adresses emails fausses et des numéros de téléphones faux lors de l'entretien téléphonique avec le client.

    le résultat est consigné dans plusieurs fichiers selon des dates au format csv dans la colonne email et la colonne tél.

    Pour les tests des numéros de tél faux:
    Qui ne commence pas par 06
    Qui ne commence pas par 07
    Une Suite de chiffres
    Des chiffres répétées plusieurs fois


    Pour les tests des emails faux:
    Népomucène: merci pour le lien, je vais tester ce pattern simple d'utilisation.
    tchize_ :

    nom de domaine existant? oui, si possible ?
    présence d'un @ obligatoire? je peux le faire avec la regex du lien de népomucène.
    utilisateur existant sur ce domaine? oui, si possible ?
    tentative d'envoi d'un email fructueuse? pas la peine d'aller jusque là car je pense que le temps de traitement sera long (a mon avis... )

    exemple de test:

    1 les adresses mail qui n'ont pas @machinchouette.fr .com .ch etc...
    2 test des domaines existants ?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    nom de domaine existant : tu prend ce qui est derrière le "bon" @ (et oui, @ peux aussi faire partie de la partie utilisateur d'un email) et, si c'est un nom de domaine (et oui on peux mettre aussi un ip plutot qu'un domaine voir une ipv6) tu fais une requete dns

    test de l'utilisateur: faut se connecter avec le protocole smtp au serveur MX dont dépend le domaine concerné et envoyer un email. Si pas de message d'erreur de type user does not exist, alors ok. Noter que les filtre anti spam disent souvent ok même avec des adresses invalides



    Quotation de wikipedia:
    Valid email addresses

    niceandsimple@example.com
    simplewith+symbol@example.com
    less.common@example.com
    a.little.more.unusual@dept.example.com
    '@[10.10.10.10]
    user@[IPv6:2001:db8:1ff::a0b:dbd0]
    "much.more\ unusual"@example.com
    "very.unusual.@.unusual.com"@example.com
    "very.(),:;<>[]\".VERY.\"very@\\\ \"very\".unusual"@strange.example.com
    0@a
    !#$%&'*+-/=?^_`{}|~@example.org
    "()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}|\ \ ~\ \ \ ?\ \ \ ^_`{}|~.a"@example.org
    ""@example.org
    postbox@com (top-level domains are valid hostnames)

    Invalid email addresses

    Abc.example.com (an @ character must separate the local and domain parts)
    Abc.@example.com (character dot(.) is last in local part)
    Abc..123@example.com (character dot(.) is double)
    A@b@c@example.com (only one @ is allowed outside quotation marks)
    a"b(c)d,e:f;g<h>i[j\k]l@example.com (none of the special characters in this local part is allowed outside quotation marks)
    just"not"right@example.com (quoted strings must be dot separated, or the only element making up the local-part)
    this is"not\allowed@example.com (spaces, quotes, and backslashes may only exist when within quoted strings and preceded by a slash)
    this\ still\"not\\allowed@example.com (even if escaped (preceded by a backslash), spaces, quotes, and backslashes must still be contained by quotes)
    Vu le bordel, tu vois tout de suite que la regexp en lien est loin d'être correcte!

    Si tu veux juste te contenter de vérifier la syntaxe, je te recommande d'utiliser l'api javamail et de faire des

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new InternetAddress(String,true)
    si ça lance un AddressException, alors elle n'est pas valide d'après le RFC. Maintenant, ce ne vérifiera pas que les domaine ou les users existe. Si je tappe toto@toto ça me dira ok

  7. #7
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    J'ai téléchargé l'api javamail et j'ai inclu ce test comme tu m'as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(email2.length() != 0){
    System.out.println("email2: "+email2);
    //essai = Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2); 
    //si l'email est différent 0 (NULL) et si 
    new InternetAddress(email2,true);//if(Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2.toLowerCase()) == false){
    //System.out.println(email2+" ---- 1. Email non conforme ligne: "+ligne2);
    //		    			}
    		    		}
    J'ai prix exemple des adresses mail que tu m'as passé afin de les prendre en compte dans mes tests futur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    niceandsimple@example.com
    simplewith+symbol@example.com
    less.common@example.com
    a.little.more.unusual@dept.example.com
    @[10.10.10.10]
    user@[IPv6:2001:db8:1ff::a0b:dbd0]
    "much.more\ unusual"@example.com
    "very.unusual.@.unusual.com"@example.com
    "very.(),:;<>[]\".VERY.\"very@\\\ \"very\".unusual"@strange.example.com
    0@a
    !#$%&'*+-/=?^_`{}|~@example.org
    "()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}|\ \ ~\ \ \ ?\ \ \ ^_`{}|~.a"@example.org
    ""@example.org
    postorg@com
    Abc.example.com
    Abc.@example.com
    Abc..123@example.com
    A@b@c@example.com
    a"b©d,e:f;g<h>i[j\k]l@example.com
    just"not"right@example.com
    this is"not\allowed@example.com
    this\ still\"not\\allowed@example.com
    je fais tourner le programe et je me rend compte qu'il s'arrete à

    avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    javax.mail.internet.AddressException: Missing local name in string ``@[10.10.10.10]''
    pourquoi ne m'a-t-il pas afficher de message d'erreur avant ?

  8. #8
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    J'ai téléchargé l'api javamail et j'ai inclu ce test comme tu m'as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(email2.length() != 0){
    System.out.println("email2: "+email2);
    //essai = Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2); 
    //si l'email est différent 0 (NULL) et si 
    new InternetAddress(email2,true);//if(Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2.toLowerCase()) == false){
    //System.out.println(email2+" ---- 1. Email non conforme ligne: "+ligne2);
    //		    			}
    		    		}
    J'ai prix exemple des adresses mail que tu m'as passé afin de les prendre en compte dans mes tests futur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    niceandsimple@example.com
    simplewith+symbol@example.com
    less.common@example.com
    a.little.more.unusual@dept.example.com
    @[10.10.10.10]
    user@[IPv6:2001:db8:1ff::a0b:dbd0]
    "much.more\ unusual"@example.com
    "very.unusual.@.unusual.com"@example.com
    "very.(),:;<>[]\".VERY.\"very@\\\ \"very\".unusual"@strange.example.com
    0@a
    !#$%&'*+-/=?^_`{}|~@example.org
    "()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}|\ \ ~\ \ \ ?\ \ \ ^_`{}|~.a"@example.org
    ""@example.org
    postorg@com
    Abc.example.com
    Abc.@example.com
    Abc..123@example.com
    A@b@c@example.com
    a"b©d,e:f;g<h>i[j\k]l@example.com
    just"not"right@example.com
    this is"not\allowed@example.com
    this\ still\"not\\allowed@example.com
    je fais tourner le programe et je me rend compte qu'il s'arrete à

    avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    javax.mail.internet.AddressException: Missing local name in string ``@[10.10.10.10]''
    pourquoi ne m'a-t-il pas afficher de message d'erreur avant ?
    Parce qu'il considère les adresses mails précédentes valide, sans doute.

  9. #9
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Premièrement:

    J'aimerais stocker cette fausse adresse et toutes les autres qui passeront par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    } catch (AddressException e) {
    e.printStackTrace();
    }
    et que mon programme continue à lire mon fichier .csv.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    System.out.println("VERIFICATION EMAIL FAUX: ");
    		    while ((nextLine2 = reader2.readNext()) != null) {
    		        // nextLine[] is an array of values from the line
    		    	nomprenom2 = nextLine2[0];
    		    	//portable = nextLine[30];
    		    	email2 = nextLine2[38];
    		    	conclusion_appel_call12 = nextLine2[70];
     
    		    	if(!nomprenom2.equals(null)){
        				ligne2++;
        			}
    		    	if(conclusion_appel_call12.equals("Argumenté positif")){ 
    		    			// si Conclusion_Appel_Call1 est Argumenté positif
    		    		if(email2.length() != 0){//si le nombre de caractère de la chaîne récupérer est <> de 0
     
    		    			System.out.println("Avant Test: "+email2);
    		    			if(Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2.toLowerCase()) == false){
    		    				System.out.println(email2+" ---- 1. Email non conforme ligne: "+ligne2);
    		    				new InternetAddress(email2,true);
    		    			}
    		    		}
    		    	}
    		    }
    		    System.out.println("Total adresse email traitées: "+ligne2);
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (AddressException e) {
    			// TODO Auto-generated catch block
    			System.out.println("email d'erreur: "+email2+" ligne: "+ligne2);
    			e.printStackTrace();
    		}

    Console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    VERIFICATION EMAIL FAUX: 
    Avant Test: christophevillain@sfr.fr
    Avant Test: niceandsimple@example.com
    Avant Test: simplewith+symbol@example.com
    simplewith+symbol@example.com ---- 1. Email non conforme ligne: 4
    Avant Test: less.common@example.com
    Avant Test: a.little.more.unusual@dept.example.com
    Avant Test: @[10.10.10.10]
    @[10.10.10.10] ---- 1. Email non conforme ligne: 7
    email d'erreur: @[10.10.10.10] ligne: 7
    javax.mail.internet.AddressException: Missing local name in string ``@[10.10.10.10]''
    	at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1209)
    	at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1091)
    	at javax.mail.internet.InternetAddress.parse(InternetAddress.java:633)
    	at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:111)
    	at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:139)
    	at lireCSV.main(lireCSV.java:117)

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    L'exemple était

    '@[10.10.10.10]

    et non pas

    @[10.10.10.10]




    Ensuite, si tu veux que ton programme continue, il faut attraper l'exception et la gérer.

  11. #11
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Merci pour la réflexion.

    le pattern la bien mis en email non conforme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    VERIFICATION EMAIL FAUX: 
    Avant Test: christophevillain@sfr.fr
    Avant Test: niceandsimple@example.com
    Avant Test: simplewith+symbol@example.com
    simplewith+symbol@example.com ---- 1. Email non conforme ligne: 4
    Avant Test: less.common@example.com
    Avant Test: a.little.more.unusual@dept.example.com
    Avant Test: '@[10.10.10.10]
    '@[10.10.10.10] ---- 1. Email non conforme ligne: 7Avant Test: user@[IPv6:2001:db8:1ff::a0b:dbd0]
    user@[IPv6:2001:db8:1ff::a0b:dbd0] ---- 1. Email non conforme ligne: 8
    Avant Test: "much.more unusual"@example.com
    "much.more unusual"@example.com ---- 1. Email non conforme ligne: 9
    Avant Test: "very.unusual.@.unusual.com"@example.com
    "very.unusual.@.unusual.com"@example.com ---- 1. Email non conforme ligne: 10
    Avant Test: "very.(),:;<>[]"".VERY.""very@\ ""very"".unusual"@strange.example.com
    "very.(),:;<>[]"".VERY.""very@\ ""very"".unusual"@strange.example.com ---- 1. Email non conforme ligne: 11
    email d'erreur: "very.(),:;<>[]"".VERY.""very@\ ""very"".unusual"@strange.example.com ligne: 11
    javax.mail.internet.AddressException: Quote not at end of local address in string ``"very.(),:;<>[]"".VERY.""very@\ ""very"".unusual"@strange.example.com''
    	at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1194)
    	at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:144)
    	at lireCSV.main(lireCSV.java:113)

  12. #12
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    ce que je désire faire, c'est déja relever toutes les adresses fausse avant d'envoyer le AddressException.

    Je sais pas comment m'y prendre pour qu'il revienne dans la boucle de lecture de mon fichier csv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     while ((nextLine2 = reader2.readNext()) != null) {
    if(Pattern.matches("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$", email2.toLowerCase()) == false){
    		    				System.out.println(email2+" ---- 1. Email non conforme ligne: "+ligne2);
    		    				new InternetAddress(email2,true);
    		    			}
     
     }
    		    System.out.println("Total adresse email traitées: "+ligne2);
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (AddressException e) {
    			// TODO Auto-generated catch block
    			System.out.println("email d'erreur: "+email2+" ligne: "+ligne2);
    			//return;
    			e.printStackTrace();
    		}

  13. #13
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Deuxiemement:

    Je me suis rendu compte qu'une adresse comme yann.bouti@gmai.com passait à travers mon test.

    yann.bouti@gmai.com est une adresse fausse.
    C'est yann.bouti@gmail.com qui devait être saisie et non pas yann.bouti@gmai.com.

    ceci dit le nom de domaine gmai.com existe.

    mais l'adresse yann.bouti n'existe pas.

    C'est pourquoi il n'ya pas eu d'Adresse Exception j'imagine..??

    Existe-il une autre solution plus fiable pour qui permetra de dire que yann.bouti@gmai.com est une adresse fausse ?

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    1) met le try / catch dans la boucle, simplement
    2) l'adresse en gmai.com est valide, c'est juste qu'elle n'existe pas. Et là, sans envoyer un mail avec un lien de confirmation, impossible à savoir. Tout ce que fait le constructeur de InternetAdress, c'est de valider la sémantique (et visiblement pas parfaitement )

  15. #15
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    000@000.com passe entre les mailles de ma regex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$"
    comment prendre en interdire les nombres au début d'une adresse mail et juste après le @ ?

    les ; devront être aussi interdit

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    000@000.com passe entre les mailles de ma regex:
    En même temps cette adresse est sémantiquement correcte.

  17. #17
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Points : 2 657
    Points
    2 657
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    000@000.com passe entre les mailles de ma regex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$"
    comment prendre en interdire les nombres au début d'une adresse mail et juste après le @ ?

    les ; devront être aussi interdit
    Personnellement je trouve qu'après une certaine taille les regex deviennent imbuvable, avec pour conséquence que plus personne ne sait comment faire pour modifier un truc.
    Autant alors le faire "à la main", décomposé en méthode claire. C'est bien plus simple et évolutif. Je suis assez contre cette idée de mettre toujours des regex...

  18. #18
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    c'est quand même louche d'avoir une adresse qui commence par un chiffre.

    En faite, je vais me créer une régle dans la regex:

    si la chaine commence par un chiffre ou contient (;,!§:/*$£¤~&"#'{([-|`\_^])°=+})
    si apres le @ il y'a un chiffre des le début

    adresse fausse !

    J'ai déja fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ^[_a-z0-9-]+[^0]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$
    Est-ce exacte ?

  19. #19
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Abc.@example.com passe aussi

    J'aimerais inclure dans le pattern regex, l'exclusion du point avant le @

    Abc..123@example.com passe aussi

    J'aimerais inclure dans le pattern regex, l'exclusion de 2 point à la suite

    11@55.net passe aussi

    le fait d'avoir que des chiffres parait suspect pour une adresse mail.

    Les personnes en charges de saisir les adresses mails peuvent donc saisir des chiffres (ce qu'il faut aussi prendre en compte dans la regex).

  20. #20
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, bon, comme tous les autres avant toi tu es en train d'inventer tes propres règles de ce qui est valide ou pas, quoi -_-°.

    Et encore, là c'est vraiment du pinaillage. paul..dupont@quelquepart.fr va adorer le fait que tu n'aimes pas sa petite préférence artistique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Mail] Vérifier des adresses email
    Par calitom dans le forum Langage
    Réponses: 6
    Dernier message: 02/06/2008, 14h32
  2. Saisie auto des adresses mail
    Par Yepazix dans le forum Outlook
    Réponses: 6
    Dernier message: 17/01/2008, 16h26
  3. Utilisation des adresses mails
    Par LP-mpascolo dans le forum Excel
    Réponses: 3
    Dernier message: 02/11/2007, 10h47
  4. [c#, vs2005, WinForms]Vérifier validité adresse mail
    Par Filippo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/06/2007, 09h10
  5. [VBA][outlook] récupération des adresses mail
    Par arno2004 dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 27/07/2004, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo