Section courante

A propos

Section administrative du site

La validation d'une adresse de courrier électronique (courriel) constitue l'un des problèmes les plus fréquents dans le développement d'applications Web, de logiciels de gestion et de formulaires en ligne. À première vue, cette tâche peut sembler relativement simple puisqu'une adresse électronique possède généralement une structure facile à reconnaître. Pourtant, lorsqu'on cherche à effectuer une validation fiable avant l'envoi ou l'enregistrement d'un formulaire, la situation devient rapidement plus complexe. Une adresse de courriel valide doit respecter plusieurs règles syntaxiques précises afin de pouvoir être correctement interprétée par les serveurs de messagerie. Il faut notamment vérifier la présence d'un unique caractère arobas (@), s'assurer que le nom de domaine situé après celui-ci est correctement formé et contient au minimum un point séparant le domaine principal de son extension. De plus, certains caractères spéciaux sont interdits ou nécessitent un traitement particulier, tandis que d'autres peuvent rendre l'adresse invalide malgré une apparence correcte. Une validation insuffisante risque de permettre la saisie de données erronées, alors qu'une validation trop stricte peut rejeter des adresses pourtant légitimes.

Le programme QuickBASIC présenté ci-dessous illustre une méthode simple permettant de vérifier les principaux critères de validité d'une adresse électronique. L'algorithme commence par examiner chaque caractère de la chaîne afin de détecter la présence de caractères interdits tels que les espaces, certaines ponctuations ou des caractères de contrôle invisibles. Il vérifie ensuite que l'adresse contient exactement un seul symbole arobas, condition indispensable à toute adresse électronique valide. Une fois cette étape franchie, le programme s'assure que la partie correspondant au nom de domaine contient bien un point placé à un endroit approprié. Si l'une de ces vérifications échoue, la fonction retourne immédiatement une valeur indiquant que l'adresse est invalide. Dans le cas contraire, elle confirme que la syntaxe de base de l'adresse est acceptable. Les différents exemples fournis permettent de tester plusieurs cas typiques, incluant des adresses incomplètes, des adresses contenant plusieurs caractères arobas, des domaines mal formés ou encore des caractères non autorisés. Cet exemple constitue une excellente introduction aux techniques de validation de données en programmation et démontre comment quelques contrôles simples peuvent considérablement améliorer la qualité des informations saisies par les utilisateurs. Bien qu'une validation complète conforme aux normes modernes de messagerie électronique soit beaucoup plus complexe, cette approche fournit une base solide pour de nombreux programmes et formulaires nécessitant une vérification rapide des adresses de courriel.

Voici les règles à suivre :

A l'aide du code source QuickBASIC suivant, vous trouverez la réponse que vous souhaitez :

  1. DECLARE FUNCTION Bool2Str$ (value!)
  2. DECLARE FUNCTION IsEmail! (Email$)
  3. PRINT "Courriel «abc» est valide: " + Bool2Str$(IsEmail("abc"))
  4. PRINT "Courriel «@» est valide: " + Bool2Str$(IsEmail("@"))
  5. PRINT "Courriel «@abc.abc» est valide: " + Bool2Str$(IsEmail("@abc.abc"))
  6. PRINT "Courriel «abc@gladir.com» est valide: " + Bool2Str$(IsEmail("abc@gladir.com"))
  7. PRINT "Courriel «abc@@gladir.com» est valide: " + Bool2Str$(IsEmail("abc@@gladir.com"))
  8. PRINT "Courriel «abc@gl][adir.com» est valide: " + Bool2Str$(IsEmail("abc@gl][adir.com"))
  9.  
  10. FUNCTION Bool2Str$ (value)
  11.  IF value = 0 THEN Bool2Str$ = "FALSE" ELSE Bool2Str$ = "TRUE"
  12. END FUNCTION
  13.  
  14. FUNCTION IsEmail (Email$)
  15.  AfterArobas = 0
  16.  IF LEN(Email$) = 0 THEN
  17.   IsEmail = 0
  18.   EXIT FUNCTION
  19.  END IF
  20.  FOR I = 1 TO LEN(Email$)
  21.   CurrChar$ = LEFT$(MID$(Email$, I), 1)
  22.   SELECT CASE CurrChar$
  23.    CASE " ", "(", ")", ":", ",", "/", "\", "~", "`", "!", "#", "$", "%", "^", "&", "*", "+", "=", "[", "]", "{", "}", "|", "\", "?", "<", ">"
  24.     IsEmail = 0
  25.     EXIT FUNCTION
  26.   END SELECT
  27.   IF CurrChar$ = CHR$(9) OR CurrChar$ = CHR$(13) OR CurrChar$ = CHR$(10) OR CurrChar$ = CHR$(34) THEN
  28.    IsEmail = 0
  29.    EXIT FUNCTION
  30.   END IF
  31.  NEXT
  32.  ArobasFound = 0
  33.  FOR I = 2 TO LEN(Email$)
  34.   IF LEFT$(MID$(Email$, I), 1) = "@" THEN
  35.    ArobasFound = ArobasFound + 1
  36.    IF ArobasFound = 1 THEN AfterArobas = I
  37.   END IF
  38.  NEXT
  39.  IF ArobasFound <> 1 THEN
  40.   IsEmail = 0
  41.   EXIT FUNCTION
  42.  END IF
  43.  AfterArobas = AfterArobas + 2
  44.  WHILE ((AfterArobas <= LEN(Email$)) AND (LEFT$(MID$(Email$, AfterArobas), 1) <> "."))
  45.   AfterArobas = AfterArobas + 1
  46.  WEND
  47.  IF ((AfterArobas >= LEN(Email$)) OR (LEFT$(MID$(Email$, AfterArobas), 1) <> ".")) THEN
  48.   IsEmail = 0
  49.   EXIT FUNCTION
  50.  END IF
  51.  IsEmail = 1
  52. END FUNCTION

on obtiendra le résultat suivant :

Courriel «abc» est valide: FALSE
Courriel «@» est valide: FALSE
Courriel «@abc.abc» est valide: FALSE
Courriel «abc@gladir.com» est valide: TRUE
Courriel «abc@@gladir.com» est valide: FALSE
Courriel «abc@gl][adir.com» est valide: FALSE


Dernière mise à jour : Mercredi, le 14 septembre 2016