Menu

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

Messages postés
426
Date d'inscription
mardi 1 juillet 2008
Dernière intervention
24 janvier 2019
- - Dernière réponse : Whismeril
Messages postés
12743
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
- 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

Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
24563
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 février 2019
1844
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57792 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
12743
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
465
1
Merci
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.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57792 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Whismeril
Messages postés
426
Date d'inscription
mardi 1 juillet 2008
Dernière intervention
24 janvier 2019
86
0
Merci
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.
Commenter la réponse de heliconius
Messages postés
12743
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
465
0
Merci
De rien
Commenter la réponse de Whismeril