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

Langage Perl Discussion :

Adresse Email valide


Sujet :

Langage Perl

  1. #1
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut Adresse Email valide
    Bonjour,
    Pour un besoin particulier, j'ai dû me mettre à perl. J'ai cette fonction pour vérifier qu'un email est syntaxiquement valide :
    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
     
    sub CHECK_EMAIL  
    {
     
        $email = $_[0];
     
        if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || $email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) 
        {
            return 0;
        }
     
        else 
        {
     
            return 1;
        }
    }
    Ce que je veux maintenant, c'est de tester la validité du nom de domaine de l'email pour m'assurer que l'email est réellement valide. Comment pourrais-je le faire ?

    Merci
    N'oubliez pas le tag et

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : avril 2003
    Messages : 6 245
    Points : 8 560
    Points
    8 560
    Par défaut
    Tu pourrais faire une requête DNS. Par ailleurs je te conseille d'utiliser plutôt un module pour cette vérification de la validité d'une adresse email, la norme est horriblement compliquée.

    --
    Jedaï

  3. #3
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : février 2004
    Messages : 887
    Points : 1 677
    Points
    1 677
    Par défaut
    Merci beaucoup Jedai. Mais, je fais mes premiers pas en perl et j'ai besoin d'un peu plus de détail. Concrètement, comment dois-je me servir du module dont tu parles?
    Merci.
    N'oubliez pas le tag et

  4. #4
    Membre régulier Avatar de Tiger-222
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : janvier 2007
    Messages : 76
    Points : 106
    Points
    106
    Par défaut
    Comme écrit sur dans page founie Jedai, tu t'en sert tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl
     
    use Regexp::Common qw[Email::Address];
    use Email::Address;
     
    while (<>) {
    	my (@found) = /($RE{Email}{Address})/g;
    	my (@addrs) = map $_->address,
    	Email::Address->parse("@found");
    	print "X-Addresses: ",
    	join(", ", @addrs),
    	"\n";
    }
    Fais des essais avec ce code puis modifie-le à ta convenance.

    Auparavant il faudra installer le module Regexp::Common::Email::Address :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cpan -i Regexp::Common::Email::Address

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Tu dois aussi pouvoir regarder du coté de ce module : Mail::CheckUser ou encore Net::ValidMX ou encore et encore : Email::Valid.

    A tous les experts, quel module parmi la pléthore de module validant un email est-il préférable d'utiliser ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Membre habitué Avatar de mensoif
    Profil pro
    Inscrit en
    mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 248
    Points : 129
    Points
    129
    Par défaut
    Bien qu'il soit toujours conseillé d'utiliser des modules, des fois je ne suis pas partisant et j'use de mes propres techniques (j'aime bien faire les choses)

    Pour vérifier la validité d'un mail,

    -> je look le serveur de mail avec host
    -> je "parle SMTP" ( ou SMTPes comme tu veux) en utilisant netctat.
    -> j'analyse la réponse, échec ou succès pour savoir si l'adresse mail est valide.

    3-4 ligne pour la vérification, pourquoi utiliser un module ? :p

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    avril 2004
    Messages
    19 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 19 799
    Points : 499 036
    Points
    499 036
    Par défaut
    tu pourrais mettre ton code pour les autres alors.

    Sinon il dois y avoir des modules qui font la même chose que toi, voir mieux , c'est pour ça qu'il est toujours intéressant de prendre quelques minutes pour fouiller le cpan avant de se lancer dans le code.

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par mensoif Voir le message
    pourquoi utiliser un module ? :p
    Pour être portable...
    Les commandes dont tu parles ne sont pas exemple pas disponibles sur mon système.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Membre habitué Avatar de mensoif
    Profil pro
    Inscrit en
    mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 248
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par djibril Voir le message
    tu pourrais mettre ton code pour les autres alors.

    Sinon il dois y avoir des modules qui font la même chose que toi, voir mieux , c'est pour ça qu'il est toujours intéressant de prendre quelques minutes pour fouiller le cpan avant de se lancer dans le code.
    Le code n'est pas trop perlien, mais j'peux le filler quand même,
    en p'tit shell bash ca peut le faire aussi

    $ host -t mx free.fr
    >free.fr mail is handled by 10 mx1.free.fr.
    >free.fr mail is handled by 20 mx2.free.fr.

    $ telnet mx1.free.fr 25
    #netcat, ssh , ce que tu veux tant que tu peux dialoguer en mode connecte #avec un hote

    Ensuite tu parles SMTP soit
    HELO moto
    MAIL FROM <moto@dunkerq.com>
    RCPT TO <addresse@tester.com> # reponse = 250 adresse valide 550 adresse non valide
    QUIT


    Pour être portable...
    Les commandes dont tu parles ne sont pas exemple pas disponibles sur mon système.
    C'est bien répondus, han dans ma ratiche, mais le truc, c'est que je ne réagis plus avec l'os windows ( en présumant que se soit celui que tu utilises) et cela me portera des ennuis un jour je pense.

    En tous cas je te fournis l'équivalent de la commande host sous win,

    > nslookup -qtype=mx free.fr

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    J'ai testé Mail::CheckUser et Email::Valid, et sans être allé regarder dedans, je suppose qu'ils réalisent la même chose, de manière portable, et très simplement.
    $ perl -MMail::CheckUser -e 'print Mail::CheckUser::check_email(q(toto@my_google.fr)) ? "OK\n" : "BAD email\n"'
    BAD email

    $ perl -MEmail::Valid -e 'eval { print Email::Valid->address( -address => q(tutu@my_google.fr), -mxcheck => 1) ? "OK\n"
    : "BAD email ($Email::Valid::Details)\n"; }; print "Error : $@" if $@;'
    BAD email (mxcheck)
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

Discussions similaires

  1. Valider une adresse email
    Par mhuress dans le forum Développement
    Réponses: 4
    Dernier message: 22/03/2012, 13h34
  2. controle de saisie d'une adresse email valide
    Par nassing dans le forum jQuery
    Réponses: 1
    Dernier message: 26/05/2011, 15h52
  3. validation d'adresse email
    Par sky88 dans le forum VB.NET
    Réponses: 10
    Dernier message: 06/07/2009, 17h27
  4. adresse email valide
    Par isabelle22 dans le forum Débuter avec Java
    Réponses: 14
    Dernier message: 21/01/2009, 01h29
  5. Valider champ + adresse email
    Par benassis dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/09/2007, 17h59

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