Vérification d'adresse mail, getmxrr et function perso...

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 15:30

Bonjour,

J'ai lus sur le site de php.net qu'il ne fallait pas utiliser la fonction getmxrr afin de vérifier la validité d'une adresse e-mail.

En ce qui me concerne j'aimerais utiliser cette fonction afin de vérifier tout les e-mail de ma base de donné:

Code : Tout sélectionner

function mailCheck($Email) { usleep(10000); list(,$domain ) = split('@',$Email); if (getmxrr($domain, $MXHost)) $ConnectAddress = $MXHost[0]; else $ConnectAddress = $domain; $Connect = @fsockopen($ConnectAddress,25,&$errno,&$errstr); if($Connect) { if(ereg("^220", $Out = fgets($Connect, 1024))) { fputs ($Connect, "HELO {$_SERVER['HTTP_HOST']}\r\n"); $Out = fgets ( $Connect, 1024 ); fputs ($Connect, "MAIL FROM: <{$Email}>\r\n"); $From = fgets ( $Connect, 1024 ); fputs ($Connect, "RCPT TO: <{$Email}>\r\n"); $To = fgets ($Connect, 1024); fputs ($Connect, "QUIT\r\n"); fclose($Connect); if (!ereg ("^250", $To) && !ereg ( "^251", $To )) // Adresse rejetée par le serveur // code concerné ... else // Adresse acceptée par le serveur // code concerné ... }else{ // Le serveur n'a pas répondu // code concerné ... } }else{ // Connexion au serveur de messagerie impossible // code concerné ... } }
Mais avant tout, j'aimerais savoir pourquoi php.net signale qu'on ne dois pas l'utiliser ainsi et quel son les risques ?!

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 15:35

J'ai lus sur le site de php.net qu'il ne fallait pas utiliser la fonction getmxrr afin de vérifier la validité d'une adresse e-mail.
ou ca exactement ?

Mammouth du PHP | 672 Messages

07 avr. 2010, 15:41

J'ai lus sur le site de php.net qu'il ne fallait pas utiliser la fonction getmxrr afin de vérifier la validité d'une adresse e-mail.
ou ca exactement ?
Euh...non rien :oops:
Ici.
Note: Cette fonction ne doit pas être utilisée à des fin de vérification d'adresses. Seuls les serveurs de mails trouvés dans les enregistrements DNS sont retournés. Suivant la » RFC 2821 lorsque aucun serveur de mail n'est listé, hostname doit être utilisé comme serveur de mail, avec la priorité 0.

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 15:50

oui c'est vrai, sinon y'a ca checkdnsrr mais c'est le même "problème"

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 15:54

Mais quel est le problème ? C'est justement ça que je ne comprends pas :/

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 15:57

Mais quel est le problème ? C'est justement ça que je ne comprends pas :/
parce que ca vérifie uniquement le domaine et non pas le mail en lui même.

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 16:00

Getmxrr ne vérifie que le domaine certes, mais ma fonction permet de tout vérifier. Ce n'est pas ça le problème et je ne le comprends pas.

ViPHP
AB
ViPHP | 5818 Messages

07 avr. 2010, 16:11

On ne peut pas vérifier si une adresse email est exacte car les serveurs ne vont pas passer leur temps à valider des listes de spam, entre autre.
Ou alors il faudrait que le serveur soit configuré par un inconscient.

Mais on peut affiner pour savoir si l'adresse est cohérente.

Et on utilise souvent checkdnsrr après FILTER_VALIDATE_EMAIL pour confirmer un peu plus que l'adresse mail ressemble à quelque chose d'existant.

Pour le reste ta fonction qui vérifie tout te renverras pratiquement tout le temps des email invalides, car les serveurs ne renverront pas toutes les données que tu leur demande (cf ma première ligne).

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 16:22

Ok donc le risque c'est de ne pas avoir de réponse ? Car j'ai testé avec 3 e-mail sur les domaine gmail.com, hotmail.fr et un dernier hébergé par OVH. La réponse est exacte, par exemple pour:

[email protected] // je récupére true
[email protected] // je récupére false

et ainsi de suite pour les deux autres domaines. Donc jusque ici tout fonctionne.

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 16:34

oui parce de ton coté tout roule, tu n'utilises pas getmxrr pour verifie ton mail, mais pour voir si le domaine existe, ensuite avec ton socket tu vérifies si il existe, c'est la méthode a adopté. Dans la doc c'est dans le cas ou tu te dis :
DOMAINE EXITE alors EMAIL aussi

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 16:49

Pour être un peux plus franc, j'aimerais savoir si cette méthode entraine le risque de finir sur des blackliste en tant que spammer ...

ViPHP
ViPHP | 5462 Messages

07 avr. 2010, 16:51

Pour être un peux plus franc, j'aimerais savoir si cette méthode entraine le risque de finir sur des blackliste en tant que spammer ...
je pense pas, tu fais uniquement une vérification

Eléphanteau du PHP | 15 Messages

07 avr. 2010, 17:00

et si je lance cinq vérif' sur quattre adresse non valide pour une valide, ça change surement la donne ?

ViPHP
AB
ViPHP | 5818 Messages

07 avr. 2010, 17:56

Si le serveur analyse ton comportement comme étant celui d'un spameur tu prends le risque qu'il te considère comme tel ...

Eléphant du PHP | 422 Messages

08 avr. 2010, 12:53

hello

pour q'un mail soit valide il faut le faire valider par l'utilisateur, je pense que ca reste la "meilleur" méthode

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)