Pour envoyer des SMS ou vérifier un numéro de téléphone mobile avec CaptainVerify, chaque numéro de votre base doit être écrit dans un format que tous les opérateurs comprennent. Ce format porte un nom : E.164. Sa règle principale tient en une ligne. Ses exceptions font échouer les imports.

Étape 1 : le code du pays

Chaque numéro commence par le code du pays, aussi appelé indicatif international. Il compte 1 à 3 chiffres : 33 pour la France, 32 pour la Belgique, 49 pour l’Allemagne, 34 pour l’Espagne. La liste complète est dans notre tableau des 230 indicatifs téléphoniques par pays.

Dans la norme E.164, ce code s’écrit toujours précédé du signe « + ».

Le « 00 » que vous composez depuis un poste français mène au même endroit, mais il appartient au réseau de départ. Chaque pays a le sien : 00 en France comme dans le reste de l’Europe, 011 aux États-Unis et au Canada, 0011 en Australie. Un numéro stocké sous la forme 0033611223344 oblige donc chaque destinataire à traduire votre convention locale. Le « + » se lit partout. Gardez-le dans vos colonnes.

Étape 2 : la norme E.164

E.164 est la recommandation de l’Union internationale des télécommunications qui définit l’écriture d’un numéro pour qu’il soit routable depuis n’importe quel réseau. Elle vaut pour les appels comme pour les SMS.

Le numéro s’écrit d’un seul bloc, avec le « + » puis les chiffres. Et il plafonne à 15 chiffres, indicatif compris, le « + » exclu.

À quoi ressemble un numéro au format E.164

Prenons le 06 11 22 33 44, un mobile français.

  • Indicatif du pays : 33
  • Numéro national : 06 11 22 33 44
  • Le 0 initial disparaît une fois l’indicatif ajouté
  • Résultat : +33611223344

Le numéro national réunit le préfixe qui identifie le type de ligne (06 et 07 pour les mobiles, 01 à 05 pour les fixes) et le numéro de l’abonné.

Les erreurs qui font échouer une conversion

  • Les espaces, points, tirets et parenthèses restent dans la base. +33 6 11 22 33 44 doit devenir +33611223344.
  • Le 0 est conservé après l’indicatif. Un +330611223344 sera rejeté par l’opérateur.
  • Le 00 est gardé devant l’indicatif. On écrit +33, jamais 0033 ni 00+33.
  • L’Italie conserve le 0 initial de ses numéros fixes. Un fixe romain devient +390612345678. Le 0 sauté donnerait un numéro inexistant. Les mobiles italiens échappent à la règle, puisqu’ils commencent déjà par 3.
  • Excel avale le « + » ou bascule le numéro en notation scientifique. Passez la colonne en texte avant l’import, sinon 33611223344 ressort en 3,36112E+10.

Valider un numéro avec une expression régulière

Une fois le numéro converti, une expression régulière vérifie qu’il respecte la forme attendue. En PHP : preg_match('/^\+[1-9]\d{1,14}$/', $numero). Elle accepte un « + », un premier chiffre entre 1 et 9, puis 1 à 14 chiffres supplémentaires.

Pour les mobiles français, beaucoup de guides proposent ^\+33[67]\d{8}$. Cette version ratisse trop large. Les métadonnées de libphonenumber classent en mobile les seuls 073 à 079, ce qui laisse les 070 à 072 dehors. Une partie des 069 sort aussi du lot. La plage réellement mobile s’écrit ^\+33(?:6(?:[0-24-8]\d|3[0-8]|9[589])|7[3-9]\d)\d{6}$.

Sur un catalogue multi-pays, chaque pays a ses longueurs et ses préfixes. Cette table devient vite ingérable à la main. Google publie libphonenumber en Java, C++ et JavaScript, quand les portages PHP et Python restent maintenus par la communauté. Sur une campagne SMS, un 070 accepté par erreur part quand même dans le lot et se facture.

Une expression régulière valide une forme. Elle reste muette sur ce qui se trouve au bout de la ligne.

Un numéro bien formaté peut rester injoignable

Un numéro conforme à E.164 est routable. Il peut malgré tout être résilié depuis 3 ans ou avoir été porté chez un autre opérateur.

Le HLR Lookup interroge le registre de l’opérateur et renvoie l’état réel de la ligne, active ou éteinte, avec l’opérateur qui la gère aujourd’hui. Sur une base collectée en ligne, ce contrôle retire les numéros morts avant que la campagne SMS ne les facture.

Pour les entreprises qui ont des clients hors de France, convertir toute la base au format international conditionne la réception des SMS marketing comme des SMS transactionnels.

Convertir vos numéros au format E.164

Collez jusqu’à 100 numéros, un par ligne, mélangés ou non. Chaque numéro qui porte son indicatif est reconnu tout seul, parmi 215 pays. Une ligne que l’outil ne sait pas convertir ressort telle quelle, à sa place, pour que vous puissiez la retrouver.

Faites vérifier vos numéros dès maintenant !
100 crédits emails offerts