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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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 713
    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 713
    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 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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 éclairé 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
    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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    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 éclairé 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
    Par défaut Tri JTable bizarre complétement disjoncté
    Bonjour a tous,

    En cliquant sur l'en-tête de ma colonne dans mon JTable, j'aimerais pouvoir trier par ordre croissant ou décroissant.
    Pour ce faire, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    //active le tri du tableau
    		table.setAutoCreateRowSorter(true);
    		SortKey[] sks = new SortKey[]{ new RowSorter.SortKey(0, SortOrder.ASCENDING) };
    		//tri defaut tab sur 1ère colonne ds l'ordre croissant 
    		table.getRowSorter().setSortKeys(Arrays.asList(sks));
    je me rencontre avec stupeur que quand je clique sur la l'entête de la colonne ligne, cela me trie de facon trés trés bizarre !!


    (voir les images)


    Je comprend pas, j'ai déjà fait ce genre de tri et cela fonctionne dans une autre application swing.

    Quelqu'un a-t-il une solution à me proposer ?

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Le type de données de "Ligne", ce ne serait pas des String, par hasard ?

    Ca me paraît le cas typique d'un classement de String et non d'entier.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre éclairé 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
    Par défaut
    tm.addRow(new Object[]{ligne, portable, "", msgErreur, nomprenom, nbpsymphonie });

    ligne étant un int.

    donc, non.

    Au départ quand je clique sur le bouton controler j'ai bien l'ascendance de ma colonne. (voir image)

    le problème vient quand je clique sur l'entête de ma colonne. (voir image post précedent)

    vraiment étrange, trés étrange, j'ai pas compris

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    tm.addRow(new Object[]{ligne, portable, "", msgErreur, nomprenom, nbpsymphonie });

    ligne étant un int.
    Et seule cette ligne-là peut ajouter une row ?
    Parce qu'il suffit d'un seul objet qui ne soit pas un Integer, et patatras.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre éclairé 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
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Et seule cette ligne-là peut ajouter une row ?
    Parce qu'il suffit d'un seul objet qui ne soit pas un Integer, et patatras.
    Oui, mais c'est pas là le souci je pense.

    c'est un petit programme et je vois bien que ligne est un Integer

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    tm.addRow(new Object[]{ligne, portable, "", msgErreur, nomprenom, nbpsymphonie });

    ligne étant un int.
    Non, mais on s'en fout. Le table model par défaut retourn Object.class pour le type des colonnes, donc on compare les toString. Tu dois définir explicitement dans le model le type des colonne, en surclassant la méthode getColumnClass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        DefaultTableModel tm = new DefaultTableModel() {  
            Class<?>[] types = new Class<?> [] {  
                Integer.class, String.class,String.class,String.class,String.class,Integer.class
            };  
     
            @Override  
            public Class getColumnClass(int columnIndex) {  
                return types [columnIndex];  
            }  
        }; 
    tm.addRow(new Object[]{ligne, portable, "", msgErreur, nomprenom, nbpsymphonie });

    edit: de plus, je ne suis pas sur que le defaultrowsorter ne fait pas de toutes façons systématique un String compare, tant que tu n'invoke pas explicitement sa méthode secComparator(colonne, comparateur)

  13. #13
    Membre éclairé 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
    Par défaut
    En faite, j'ai compris pourquoi patcat41@hotmail.fr et l'autre adresse sont fausse pour le internetAdress.

    J'ai regardé dans le fichier csv et se sont les seules à comporter des espaces après le .fr.

    elles sont écrit du genre:
    patcat41@hotmail.fr[espace]

    du coup j'ai mit la fonction trim():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    email2 = nextLine2[38].trim();
    Conclusion:

    ce n'est pas javamail le souci mais la chaîne contenait un espace à la fin.

+ Répondre à la discussion
Cette discussion est résolue.

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