Une solution pour vérifier l'existance des emails

Petit nouveau ! | 6 Messages

23 mai 2009, 11:23

En tant que développeur, nous avons tendance à vérifier la syntaxe des emails et envoyer un code d'activation pour s'assurer que l'email mentionné existe, mais... y a t-il une solution non pas pour vérifier la syntaxe de l'email avec les REGEX mais plutôt l'existance réelle de cet email ?

Actuellement, je suis entrain d'explorer cette piste pour réaliser une classe qui permettra de vérifier l'existance des emails.

J'attends que vous m'aidiez en me donnant des idées car si on parvient à cette fin, on réduira considérablement le SPAM et biensur on simplifira notre code.

Merci de votre collaboration

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2009, 11:57

après avoir séparé l'adresse du nom de domaine smtp dans l'email :[email protected]
Ce qu'il faudrait , c'est vérifier si le nom de domaine existe.
On peut tester avec un PING.
Le mieux c'est surement de lister dans un tableau les nom de domaine smtp usuels (hotmail.com, hotmail.fr, yahoo.fr, free.fr....) ensuite pour les noms qui ne font pas partie du tableau, on peut PINGER le nom de domaine, si on a une reponse, on le rajoute dans le tableau.

Mais bon à mon avis dans la plupart des cas, il vaut peut être mieux avoir quelqus emails fictifs en plus que censurer quelques emails réels.

sinon, y a peut être cette page qui peut t'interesser :
http://www.afnic.fr/doc/interface/servicesweb/Domain

Petit nouveau ! | 6 Messages

23 mai 2009, 13:19

Vérifier l'existance du domaine fait partie de cette classe que j'imagine. Il ya aussi la vérification de la syntaxe de l'email avant tout, mais le problème n'est pas la.

Si vous avez un site web qui propose des inscriptions, alors au lieu d'envoyer des codes pour valider l'inscription, ça serait mieux si on pouvait vérifier l'existance de l'email directement, cela simplifirez la vie à beaucoup de développeurs. et réduira considérablement les spams.

Donc quelle est la voie à explorer pour arriver à cet fin?

ViPHP
ViPHP | 1136 Messages

23 mai 2009, 15:32

Salut ,

ne te casse pas la tête , il est impossible d'être certains à 100% de la validité d'une adresse mail .

Tu peux effectivement vérifier que le domaine existe bien , ce qui me semble le plus proche de ce que tu souhaites ( gourmand en ressource ).

Tu ne peux pas ( et je ne te le conseil pas ) sonder le serveur de mails distant pour savoir si une adresse est valide ou non ..

( perso , j'ai plutôt tendance à black-lister les adresses qui sondent mes serveurs )
Tu risques donc d'être black-listé ..

Le lien d'activation est donc je pense, la meilleurs solution .
Si l'adresse n'existe pas .. le mail sera détruit !

Ch.

Petit nouveau ! | 6 Messages

24 mai 2009, 11:09

Bonjour stopher,
Peut tu me répondre à qlq questions :

- On sait que qlq secondes suffisent pour délivrer un email, mais techniquement quelles sont les problèmes qui peuvent empecher cet email d'être délivrer a temps.

- Si un email n'est pas délivré, combien de temps peut prendre le retour ?

- Jusque la tout est une question de temps, si on peut évaluer exactement le temps d'execution de toutes ces taches, on peut trouver une astuce.

Mon idée se penche sur l'email de retour, PHP peut bien ouvrir une boite email ( il faut biensur avoir le droit!) et analyser des messages avec les REGEX.

Donc au lieu de faire un PING sur le domaine, on envoi un message vide comme un ping, et on surveille le retour.

Alors ?

ViPHP
ViPHP | 1136 Messages

24 mai 2009, 19:18

On sait que qlq secondes suffisent pour délivrer un email, mais techniquement quelles sont les problèmes qui peuvent empecher cet email d'être délivrer a temps
Beaucoup de choses peuvent ralentir l'arrivé d'un mail ..
- la file des mails à envoyer du serveur
- une pane d'un serveur dns
- une greylist
- la file au niveau du serveur anti-spam ( s'il y en a un )
- la file des mails en réception du serv distant
- ect ect ...

Mais au finale , il arrive ... ( si le serveur fonctionne )

Par contre , ce qui peut empêcher un mail d'arriver ... c'est souvent le non respect de certaines régles , même basic ..

Mon idée se penche sur l'email de retour, PHP peut bien ouvrir une boite email ( il faut biensur avoir le droit!) et analyser des messages avec les REGEX.

Donc au lieu de faire un PING sur le domaine, on envoi un message vide comme un ping, et on surveille le retour.

Alors ?
Alors !! bien les utilisateurs "valides" vont être ravi de recevoir des mails "PING" avant un véritable mail avec du contenu ...

Mammouth du PHP | 965 Messages

24 mai 2009, 19:21

Il ya déjà eut un sujet la dessus ou Hywan avait fait un bon pavé je sais pas si j'aurais la force d'aller le rechercher par contre je peux te dire que la seul validation que je fais pour les mails est la suivate :
filter_var('[email protected]', FILTER_VALIDATE_EMAIL); 
Tu sais si l'adresse email est au bon format, ensuite tu envois un mail de validation avec une clef md5(), après validation tu enregistre le tout et tu supprime les inactifs au bout de disons 30 jours.