Qu'est-ce qu'une adresse électronique valide ?

On peut répondre à cette question en passant par son contraire. Déjà, un machin comme salutlespotes, qui ne respecte pas le format d'une adresse électronique, n'est clairement pas une adresse valide. Ensuite l'adresse toto12345@h1o2t3m4a5i6l.com respecte le format, mais on peut imaginer qu'elle n'est pas valide, parce que h1o2t3m4a5i6l.com n'est pas un nom de domaine enregistré. Et même s'il l'était, qui nous dit que toto12345 est un nom de boîte-aux-lettres valide sur ce nom de domaine ? Enfin, quand bien même on aurait l'assurance que l'adresse qu'on nous soumet correspond à une boîte-aux-lettres existante, d'aucuns pourraient poser la question de savoir si c'est bien l'adresse de la bonne personne.

Il existe des moyens techniques pour valider l'existence d'un nom de domaine. Il y a des protocoles pour interroger les serveurs de mail afin de savoir si une adresse donnée est bien celle d'une boîte-aux-lettres valide chez eux. Mais d'une part ces moyens demandent des interactions entre ordinateurs, qui peuvent être longues et ne sont donc pas forcément adaptées à la validation d'un formulaire sur une page web. D'autre part et surtout, la plupart des serveurs de mail refusent de répondre à ces interrogations, dans le but de protéger leurs utilisateurs : en effet, la question toto12345 est-il une adresse valide chez vous ? pourrait fort bien être posée par un logiciel de spam.

Il y a trois méthodes classiques pour valider une adresse électronique. Elles sont toutes trois imparfaites, mais donnent des résultats tout de même satisfaisants. Pour choisir sa préférée, il convient de se poser la question de ce qu'on cherche à faire. Essentiellement : cherche-t-on à détecter une erreur de l'utilisateur, une faute de frappe par exemple ? ou cherche-t-on à éviter les adresses invalides ou usurpées ?

Pour éviter les fautes de frappe

Une première méthode consiste à faire une vérification minimale de la forme de l'adresse proposée par l'utilisateur. Il existe bien entendu une norme qui définit le format licite d'une adresse électronique, mais ici le but est de repérer les erreurs classiques de débutants, comme paul@free, michel.neuf.fr, josette@.com, etc.

On utilisera donc une règle comme une adresse électronique est un nom suivi d'une arobase puis d'un nom de domaine, en considérant qu'un nom de domaine est composé d'un point avec au moins un caractère avant et au moins deux après (attention aux ".info", ".travel", etc. si vous étiez tenté.e de limiter la longueur après le point).

En Javascript, ça donne :

if (! /.+@.+\...+/.test(email)) // then l'adresse est invalide

Cette expression rationnelle dit :

  • .+ : au moins un caractère quelconque
  • @ : une arobase
  • .+ : au moins un caractère quelconque
  • \. : un vrai point
  • ..+ : un caractère quelconque, puis au moins un caractère quelconque, soit au final au moins deux caractères quelconques

Là où on dit un caractère quelconque en mettant un point, on pourrait raffiner à l'infini, par exemple en se restreignant aux seuls caractères acceptés par la norme. Personnellement, l'expression simple ci-dessus me suffit, et permet je pense d'attraper pas mal d'erreurs.

Une seconde méthode, qui peut d'ailleurs être combinée à celle que nous venons de voir, consiste à demander deux fois l'adresse électronique. Comme on fait pour les mots de passe. Dans le cas des mots de passe, on le fait parce que les caractères frappés ne sont pas affichés, et que l'utilisateur ne repérera donc pas ses fautes de frappe. L'idée est la même ici, même si l'adresse frappée est visible : deux précautions valent mieux qu'une.

Pour s'assurer que l'adresse est la bonne

La troisième méthode est celle qui est utilisée quand on cherche à s'abonner à une parution électronique, et plus généralement à nombre de services qui pourront être amenés à vous envoyer du mail. Elle consiste à envoyer un mail de demande de confirmation à l'adresse saisie, avec dedans un lien sur lequel l'utilisateur devra cliquer pour valider son inscription et, partant, son adresse électronique.

Cette méthode demande plus d'infrastructure : la capacité à envoyer des mails, une base de données où stocker les confirmations en attente, la génération puis le décodage de liens personnalisés, etc. Toutes sortes de choses qui vont au-delà de la simple validation d'un formulaire en Javascript. Mais qui sont tout-à-fait de l'ordre de grandeur d'un site qui propose un abonnement à une parution électronique.

À ne pas faire : comme le site des impôts...

Pour diverses raisons, parmi lesquelles les problèmes estivaux de Free, j'ai déposé un nom de domaine, que j'appellerai ici titi-toto.fr. J'utilise pour mes relations avec les sites marchands une adresse sur ce domaine : contact@titi-toto.fr. Par extension, je comptais l'utiliser pour ma déclaration de revenus.

Toute anodine que soit cette adresse électronique, quand j'ai voulu l'utiliser pour déclarer mes revenus, je me suis reçu dans les dents le message Le format de votre adresse électronique est incorrect.

Comme j'avais du temps à perdre, je me suis adressé à l'assistance aux usagers. Voici la réponse que j'ai reçue (fautes d'orthographes d'origine) : En effet le format de votre adresse électronnique n'est pas compatible avec le site des impots car celui-ci refuse les caractère speciaux après "@" c'est pourquoi nous vous invitons à utiliser une adresse électronnique ne comportant aucun caractere spécial.

Au passage, j'avais le jour même réglé mon tiers provisionnel sur le même site des impôts (mais pas développé par les mêmes, visiblement) avec la même adresse électronique, à laquelle j'ai parfaitement reçu l'accusé de paiement.

Conclusions de l'histoire : le site des impôts, ou plutôt cette partie du site, a utilisé pour la validation des adresses électroniques, une méthode mal foutue de vérification de la forme de l'adresse. Comme je l'écris plus haut, vérifier uniquement la forme de l'adresse vise à repérer les fautes de frappe, pas à valider l'adresse électronique. On sait que cette méthode laissera passer des adresses invalides, mais elle ne doit pas rejeter des adresses valides. (Autrement dit, elle n'est pas complète mais doit rester correcte.) Si l'objectif du site des impôts était d'assurer de la validité de l'adresse, ce n'est pas en restreignant débilement la forme de l'adresse qu'il y serait parvenu.

Autre conclusion : ceux qui, comme moi, pensaient que cette possibilité de déclarer ses revenus sans certificat permettait d'ouvrir le service à tout le monde, se sont trompés. Les détenteurs d'une adresse comportant un trait d'union (toto@no-log.org, toto@club-internet.fr, etc.) en restent exclus. À rapprocher de la tendance depuis quelques années à la disparition du trait d'union des noms de sites, qui mériterait une discussion dédiée... Ironie de l'histoire : l'adresse de l'assistance aux usagers est assistance.dgfip@assistance-usagers.com !