Pour qu’une adresse email soit valide, il y a plusieurs contrôles, allant du basique au compliqués qui peuvent se faire.
Tout d’abord de quoi est composé une adresse email : Par exemple celui ci :
test.email@yopmail.com
Tout d’abord il y a une « partie domaine », qui comprends le nom de machine et le nom de domaine à qui vous voulez écrire : Ici, yopmail.com
Ensuite, il y a une « partie locale » : un libellé permettant au serveur de savoir à qui remettre le courrier chez, ici, test.email chez yopmail.com
Un symbole « @ » qui dit en gros « chez » : Le mail doit partir à test.email chez yopmail.com.
Jusqu’à là, c’est le B.A.Ba du mail, mais on peut appliquer une série de règles pour valider ces éléments dans une chaîne texte contenant une adresse email :
- L’adresse doit contenir un caractère « @ », pas plus, pas moins
- L’adresse complète ne doit pas dépasser 320 caractères de long (arobase compris)
- La partie domaine doit avoir au moins 2 caractères après le caractère « @ »
- La partie domaine doit contenir au moins un point « . »
- La partie domaine doit avoir au moins 2 caractères après le dernier point sauf si l’adresse est constitué d’une adresse IP, auquel cas il doit avoir 4 chiffres entre 0-255 séparés par des points.
- Si l’adresse est une adresse IP, il doit être entre crochets ( @[1.2.3.4] ). Litigieux.
- La partie domaine ne doit pas dépasser 255 caractères de long
- La partie domaine ne peut être constituée que des caractères ASCII suivantes :
- 48-57 ( 0 à 9)
- 65 -122 (A à Z et a à z)
- 45 ( – )
- 46 ( . )
- 95 ( _ ) - La partie locale ne doit pas dépasser 64 caractères de long
- La partie locale ne devrait contenir que les caractères ASCII suivantes, sauf exception (ci-dessous) :
- 45 ( – )
- 46 ( . )
- 95 ( _ )
- 48-57 ( 0 à 9 )
- 65 -122 ( A-Z et a-z ) - Caractères exceptionnels : Les caractères ASCII suivantes sont autorisés, mais ils sont très rares, et souvent même si les standards SMTP et POP permet de les accepter, souvent, les fournisseurs de service email les refusent (c’est le cas d’Hotmail par exemple). Du coup ils sont considérés comme litigieux :
- 33 ( ! )
- 35 ( #)
- 36 ( $ )
- 37 ( % )
- 42 ( * )
- 47 ( / )
- 63 ( ? )
- 94 ( ^)
- 96 ( ` )
- 123 ( { )
- 124 ( | )
- 125 ( } )
- 126 ( ~ )
- 61 ( = )
- 43 ( + )
- 39( ‘ )
- 38 ( & ) - Une partie locale pourrait être totalement encadrée par des doubles cotes (« ), mais pareil, ce n’est pas commun, et il faudrait les considérer comme litigieux. Il permettrait d’encadrer dans une adresse email des caractères qui seront normalement interdites (parenthèses, crochets etc…).
- Si vous acceptez des parties locales entre doubles-cotes, toute la partie locale jusqu’au caractère « @ » doit être ainsi encapsulée, et vous devriez accepter toute caractère ASCII dans la plage 32 à 127 (tous les caractères ASCII 7 bits hors les premiers 32 caractères de contrôle)
- Un point ne peut pas démarrer ou terminer une partie locale
- 2 points ne peuvent pas se suivre (..)
C’est ensuite à vous de savoir si vous voulez rejeter une adresse email par rapport à un formattage « litigieux » ou si vous acceptez d’enregistrer tout à condition que cela respecte la norme.
Enfin, il n’est pas possible par internet avec les standards de messagerie de valider l’existence d’une partie locale d’une adresse email : Il existe bien des commandes « EXPN » (récupération des membres d’une liste de diffusion) et « VRFY » (vérification d’une adresse ou liste de diffusion sur un serveur) dans le protocole SMTP (protocole de transfert de courrier) , mais avec la quantité de courriers indésirables qui existe et des gens peu scrupuleux qui font tout pour ramasser des emails de test, cette commande est systématiquement désactivé sur les serveurs de courrier !