Vérification d'adresse mail

Résolu/Fermé
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 24 déc. 2018 à 00:38
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 27 déc. 2018 à 16:56
Bonjour,

Quelqu'un connaît-il la manière de tester la validité d'une adresse email ?

Dans une page PHP, j'ai un formulaire qui est vérifié par du javascript. Celui-ci vérifie, entre autres, l'adresse email mais le résultat n'est pas d'une absolue efficacité. Le javascript vérifie que l'adresse email :
- ait un login non nul,
- que le caractère @ soit présent dans l'adresse,
- qu'il y ait au moins un point dans la partie domaine,
- que le TLD soit un TLD valide (.fr .en .com etc... la liste est fournie),
- qu'il n'y ait pas de caractères interdits (espace, virgule, caractères accentués, etc...).
Le script fait très correctement son job. Mais (c'est un site professionnel, PME) des messages indésirables sont quand même envoyés par un formulaire de contact présent sur le site. Des adresses du genre :
azaucqt1Bdm@verizon.com
=> sur le plan de la syntaxe, cette adresse répond aux normes ci-dessus pour la vérification et est donc considérée comme bonne.

Pour éviter que des robots puissent utiliser le formulaire de contact, le mail n'est envoyé QUE si le résultat d'une addition aléatoire est correct (genre : résultat de 3+4 ? Les nombres compris entre 1 et 9 sont aléatoirement choisis à chaque affichage). Cela limite les mails indésirables mais pas tous. Le gestionnaire du site peut maintenant mettre des filtres pour empêcher le mail de partir si certaines adresses d'expéditeurs semblent suspectes. Exemple : les clients de cette PME ont tous des adresses de FAI français ou de services de messagerie connus (ex: Orange, Free, Hotmail, Gmail, Yahoo, Darty, etc...). On peut donc ajouter le filtre "ne pas soumettre le formulaire si l'expéditeur vient du domaine verizon.net". Donc exclure les expéditeurs qui ont indiqué avoir une adresse mail contenant @verizon.* (.net, .com, .fr, etc) ou mettre un filtre pour inderdire les logins "azaucqt1Bdm". Mais il n'est pas possible d'imaginer tous les logins farfelus qui pourraient être utilisés.

Ma question est : comment peut-on en PHP vérifier l'existence d'une adresse mail ? Peut-on contacter le serveur de messagerie de l'expéditeur pour savoir si cette adresse existe réellement ? Exemple : soit un mail supposé être expédié par jmoreau@orange.fr : comment contacter les serveurs Orange pour vérifier que la boîte à lettres jmoreau existe chez lui, afin d'accepter cette adresse comme valable et soumettre le formulaire ? Ou y a-t-il un autre moyen efficace pour refuser des mauvaises adresses bien que syntaxiquement bonnes ?

Merci pour votre aide.


Configuration: Dual boot: Windows XP Pro SP3 / Debian Linux

A voir également:

4 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 déc. 2018 à 08:56
Bonjour,
Tu peux jeter un oeil à ce script éventuellement :https://www.phpclasses.org/package/6650-PHP-Check-if-an-e-mail-is-valid-using-SMTP.html

1
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
24 déc. 2018 à 09:01
Bonjour

la technique classique consiste à envoyer un mail avec un lien.
Ce lien pointe vers une page où tu redemandes un truc à l'utilisateur, cliquer sur un bouton, refaire une opération, etc...
L'adresse avec laquelle tu envoies ce lien est une "adresse poubelle", il faut juste penser de temps en temps à vider tous les messages d'erreur quand une adresse n'existe pas. Tu peux en plus te servir de ces messages d'erreurs pour constituer une base de données de noms de domaine indésirables.

Il y a aussi des sites qui se proposent de faire des tests pour toi, http://testermail.outils-webmaster.com semble fonctionner, il est déjà cité dans d'autres discussions sur le sujet.
1
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
27 déc. 2018 à 16:46
Merci à tous les deux pour vos reponses.

Le solution de Whismeril est une méthode que j'aurais tendance à utiliser et qui, effectivement, se rencontre souvent. On envoie un mail dans lequel il y a un lien à cliquer et qui confirme donc que l'adresse est bonne. Mais c'est une méthode qu'on utilise généralement lors d'une inscription à un site.

Là, en l'occurrence, il s'agit d'un site professionnel auprès de qui on peut envoyer un mail pour prendre RDV ou pour demander une information. La méthode du mail avec lien, si elle est acceptable pour une inscription, peut dissuader pour une simple demande de renseignements ou juste pour une prise de RDV. Et là, la classe PHP class.VerifEmail de Konstantin Granin qu'on trouve sur PHP Classes, adresse fournie par Jordane, remplit merveilleusement bien son office et est très efficace. Elle est d'ailleurs mise en place.

Je retiens les deux méthodes, chacune pour un ussage bien précis. Merci à tous les deux et, vu l'époque, bonnes fêtes de fin et de début d'année à vous deux, bien sûr, mais aussi à ceux qui traîneront sur cette page...

Sujet clos.
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 929
27 déc. 2018 à 16:56
De rien
0