Pascal Rullier a écrit :

lilian bonnafoux a écrit :

Pascal Rullier a écrit :
lilian bonnafoux a écrit :

en regardant vite fait sur google je suis tombé sur ce script

http://www.phpcs.com/codes/TESTER-VALIDITE-ADRESSE-EMAIL-SANS-ATTENDRE-REPONSE-INTERNAUTE_34158.aspx


ça peut peut être nous être utile.








Celui la teste la validité de l'email en envoyant un courriel au
destinataire.
En fait, on peut s'arrêter au rcpt to:   si le serveur dit que c'est
ok, impec.



A priori le problème de cette méthode c'est la lenteur de réponse de
certains serveur. il faut quand même que la méthode soit assez rapide et
qu'il y ait une parade au cas ou il n'y a pas de réponse  de la part du
serveur au bout d'un certains tps d'attente. Sinon il faudrat penser à
faire patienter le client pendant ce temps et je doute que cela soit
bien perçu.

Une parade en cas de non réponse ? Je ne pense pas, la vérification de l'authentification est basée sur l'adresse email. Si celle-ci ne peut être vérifiée car le serveur mail est injoignable, il ne pourra même pas terminer sa validation.

De toute façon il faut qu'on trouve une parade à ce genre de problème
afin d'éviter x enregistrement bidon.

C'est sûr, pas de bras...



J'ai mis le script en ligne pour tester :
https://auth.wireless-fr.org/[EMAIL PROTECTED]

Amusez-vous avec...
Certains serveurs mail comme gandi ou free blacklistent temporairement la machine source si beaucoup de requêtes sont faites dessus. Le test ne fait que vérifier si le destinataire est valide. Pas de message envoyé.

Voila le code, nécessite PEAR et PEAR::Net_SMTP


<?php
require 'Net/SMTP.php';

function checkEmail($email) {
 // checks proper syntax
$regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";

 if (!eregi($regexp, $email)) {
   return false;
 }

 // gets domain name
 list($username,$domain)=split('@',$email);
 // checks for if MX records in the DNS
 $mxhosts = array();
 if(!getmxrr($domain, $mxhosts)) {
   // no mx records, ok to check domain
   [EMAIL PROTECTED]($domain,25,$errno,$errstr,30);
   if (!$fp) {
     return false;
   } else {
     fclose($fp);
     return testMail($host,$email);
   }
 } else {
   // mx records found
   foreach ($mxhosts as $host) {
     echo "MX host : ".$host."<br>\n";
     [EMAIL PROTECTED]($host,25,$errno,$errstr,30);
     if ($fp) {
   fclose($fp);
   return testMail($host,$email);
     }
   }
   return false;
 }
}

function testMail($srv, $mail)
{

 $host = "wireless-fr.org";
 $from = '[EMAIL PROTECTED]';
 $fromLine = "From: Service des inscriptions<$from>\n";
 $date = "Date: ".gmdate("D, d M Y H:i:s") . " GMT\n";
 $rcpt = "To: <$mail>\n";
 $subj = "Subject: Vérification\n";
 $body = "Bienvenu chez nous.";

 /* Create a new Net_SMTP object. */
 if (! ($smtp = new Net_SMTP($srv))) {
   // echo("Unable to instantiate Net_SMTP object\n");
   return false;
 }

 /* Connect to the SMTP server. */
 if (PEAR::isError($e = $smtp->connect())) {
   // echo($e->getMessage() . "\n");
   return false;
 }

 /* HELO to the SMTP server. */
 if (PEAR::isError($e = $smtp->helo($host))) {
   // echo($e->getMessage() . "\n");
   return false;
 }

 /* Send the 'MAIL FROM:' SMTP command. */
 if (PEAR::isError($smtp->mailFrom($from))) {
   // echo("Unable to set sender to <$from>\n");
   return false;
 }

 /* Address the message to each of the recipients. */
 if (PEAR::isError($res = $smtp->rcptTo($mail))) {
echo("Unable to add recipient <$mail>: " . $res->getMessage() . "\n<br />Error ".implode(": ",$smtp->getResponse()));
   return false;
 }

// echo "Réponse rcpto:" . $res->getMessage() . "<br>\nErreur ".implode(": ",$smtp->getResponse())."<br>\n";

 /* Set the body of the message. */
// if (PEAR::isError($smtp->data($subj .$fromLine.$rcpt.$date. "\r\n" . $body))) {
 // // echo("Unable to send data\n");
 // return false;
 // }

 /* Disconnect from the SMTP server. */
 $smtp->disconnect();
 return true;
}


$email=$_REQUEST["email"];
// Test the function
echo checkEmail($email)?"<br>L'email $email existe":"<br>L'email $email est invalide!";
?>



--
Pascal Rullier - Président & Coordinateur Montpellier Wireless
Secrétaire Fédération France Wireless
phone:0950341650 | phone:0811950554 | sip:[EMAIL PROTECTED] Fax: 0955341650 | callto://syrus34 | wengo:syrusmpl
Clé GPG : http://pascal.rullier.net/[EMAIL PROTECTED]




---
%---------------------------------------%
France Wireless, Mailing liste publique.

Répondre à