Vérification d'adresse mail [Résolu/Fermé]

Signaler
Messages postés
478
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
31 mai 2020
-
Messages postés
14452
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 juin 2020
-
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

4 réponses

Messages postés
28827
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juin 2020
2 576
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65804 internautes nous ont dit merci ce mois-ci

Messages postés
14452
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 juin 2020
553
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65804 internautes nous ont dit merci ce mois-ci

Messages postés
478
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
31 mai 2020
99
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.
Messages postés
14452
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
29 juin 2020
553
De rien