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

Delphi Discussion :

Validation d'adresses mail


Sujet :

Delphi

  1. #1
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut Validation d'adresses mail
    Bonjour!

    Est-ce que l'interdiction de N° dans la nom de domaine de l'adresse est un standard internationnal ou pas?
    Ca existe un domaine avec des chiffres??

    Parce que j'ai récupéré une procédure qui vérifie assez bien les adresses mail, mais elle refuse les nombres dans le nom de domaine. Est-ce que c'est ma procédure qui n'est pas terrible, ou l'adresse mail qui est réellement invalide?
    Il s'agit d'une adresse du genre gnagna@9cegetel.com. Ca lui plait pas du tout.

    Est-ce que vous connaissez sinon des composants (ou des simples procédures) qui sont très performantes pour la vérification de la syntaxe de mail?

    Merci d'avance.
    Bonnes vacances pour les uns, et bonne semaine pour les autres!

    PS: au pire, si quelqu'un sait où trouver les normes de construction des adresses mail...

  2. #2
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    http://www.123.com est une url qui existe, donc à priori les numéros sont normalement acceptables

  3. #3
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    a priori une adresse mail peut contenir :

    tous les caractères alphanumériques non accentués, des underscores, des traits d'union, des points.
    Si je ne me trompe pas ça donne donc cet ensemble :

    ['a'..'z', '0'..'9', '-', '_', '.']

    Après, je ne sais plus s'il y a des restrictions sur la position des caractères (ex pas de chiffre en premier caractère etc.)

  4. #4
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Merci pour vos réponses

    Est-ce quelqu'un saurait où trouver une bonne procédure de vérif syntaxique des mails en delphi?

    Voici quelques infos que j'ai trouvé pour ceux que ca intéresse:
    RFC-Editeur.org

    La procédure que j'utilise actuellement (merci à son auteur!) :
    Bien efficace, mais finalement un peu trop restrictive...

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    // -----------------------------------------------------------------------------
    // FUNCTION ValidEmail  Ajoutée le 12/06/2006
    // ROLE : Vérifie l'exactitude syntaxique d'une adresse mail
    // -----------------------------------------------------------------------------
    function TFormPrincipal.ValidEmail(email: string): boolean;
      // Returns True if the email address is valid
      // Author: Ernesto D'Spirito
      const
        // Valid characters in an "atom"
        atom_chars = [#33..#255] - ['(', ')', '<', '>', '@', ',', ';', ':',
                                    '\', '/', '"', '.', '[', ']', #127];
        // Valid characters in a "quoted-string"
        quoted_string_chars = [#0..#255] - ['"', #13, '\'];
        // Valid characters in a subdomain
        letters = ['A'..'Z', 'a'..'z'];
        letters_digits = ['0'..'9', 'A'..'Z', 'a'..'z'];
        subdomain_chars = ['-', '0'..'9', 'A'..'Z', 'a'..'z'];
      type
        States = (STATE_BEGIN, STATE_ATOM, STATE_QTEXT, STATE_QCHAR,
          STATE_QUOTE, STATE_LOCAL_PERIOD, STATE_EXPECTING_SUBDOMAIN,
          STATE_SUBDOMAIN, STATE_HYPHEN);
      var
        State: States;
        i, n, subdomains: integer;
        c: char;
    begin
        State := STATE_BEGIN;
        n := Length(email);
        i := 1;
        subdomains := 1;
        while (i <= n) do begin
          c := email[i];
          case State of
          STATE_BEGIN:
            if c in atom_chars then
              State := STATE_ATOM
            else if c = '"' then
              State := STATE_QTEXT
            else
              break;
          STATE_ATOM:
            if c = '@' then
              State := STATE_EXPECTING_SUBDOMAIN
            else if c = '.' then
              State := STATE_LOCAL_PERIOD
            else if not (c in atom_chars) then
              break;
          STATE_QTEXT:
            if c = '\' then
              State := STATE_QCHAR
            else if c = '"' then
              State := STATE_QUOTE
            else if not (c in quoted_string_chars) then
              break;
          STATE_QCHAR:
            State := STATE_QTEXT;
          STATE_QUOTE:
            if c = '@' then
              State := STATE_EXPECTING_SUBDOMAIN
            else if c = '.' then
              State := STATE_LOCAL_PERIOD
            else
              break;
          STATE_LOCAL_PERIOD:
            if c in atom_chars then
              State := STATE_ATOM
            else if c = '"' then
              State := STATE_QTEXT
            else
              break;
          STATE_EXPECTING_SUBDOMAIN:
            if c in letters then
              State := STATE_SUBDOMAIN
            else
              break;
          STATE_SUBDOMAIN:
            if c = '.' then begin
              inc(subdomains);
              State := STATE_EXPECTING_SUBDOMAIN
            end else if c = '-' then
              State := STATE_HYPHEN
            else if not (c in letters_digits) then
              break;
          STATE_HYPHEN:
            if c in letters_digits then
              State := STATE_SUBDOMAIN
            else if c <> '-' then
              break;
          end;
          inc(i);
        end;
        if i <= n then
          Result := False
        else
          Result := (State = STATE_SUBDOMAIN) and (subdomains >= 2);
    end;

  5. #5
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    En utilisant les expressions régulières, ca devrait te permettre de regler facilement ton problème.

    Va voir dasn les composants freewares : http://delphi.developpez.com/freewares/

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2012, 11h59
  2. [RegExp] Valider une adresse mail tout en interdisant un domaine
    Par chagam dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2011, 08h55
  3. [Mail] Validation d'adresses mail
    Par kev484 dans le forum Langage
    Réponses: 1
    Dernier message: 17/01/2008, 20h44
  4. [RegEx] Validation d'une adresse mail
    Par elvan49 dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 11h32

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