Verification email au niveau serveur mx

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 740 fois - Téléchargée 29 fois

Contenu du snippet

Ce code permet, si votre hebergement permet les socket, de verifier la validite d'une adresse email au niveau serveur. Donc, une adresse de forme xxx@xxx.com sera peut etre bonne au niveau syntaxe, mais renverra une erreur, car non connu au niveau du serveur MX

Source / Exemple :


function CheckMail($Email) {  
  
  global $HTTP_HOST;  
  $Return = array();   

  if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $Email)) {    // test si le format de l'email est bon
    $Return[0]=false;  
    $Return[1]="$Email a un format non valide.";  
    return $Return;  
  }

  list($Username, $Domain) = split("@", $Email);  // Split le nom et le domaine

  if (checkdnsrr($Domain, "MX")) { //verifie existance serveur de mail sur ce domaine
    if (getmxrr($Domain, $MXHost)) { // Si enregitrement MX , on le met comme adresse de connexion
      for ($i = 0,$j = 1; $i < count ($MXHost); $i++,$j++) {  
        echo "Result($j) - $MXHost[$i]<BR>";   
      }
    }
    $ConnectAddress = $MXHost[0];  
  } else {   // Si pas d'enregistrement MX, on met simplement le domaine comme adresse de connexion
    $ConnectAddress = $Domain;          
  }  

  $Connect = fsockopen($ConnectAddress, 25);  

  if ($Connect) {  // Si socket ouvert
    if (ereg("^220", $Out = fgets($Connect, 1024))) {  
      fputs($Connect, "HELO $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", $From) || !ereg ("^250", $To)) { // Si adresse n'existe pas
        $Return[0]=false;  
        $Return[1]="$Email n'existe pas sur le serveur mail.";  
        return $Return;  
      }  
    }  
  } else { // Si la connection echoue 
      $Return[0] = false;  
      $Return[1] = "Impossible de se connecter au serveur mail ($ConnectAddress).";  
      return $Return;  
    }  
	
  // Si tout est OK
  $Return[0]=true;  
  $Return[1]="$Email EXISTE BIEN.";  
  return $Return;  
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
dimanche 12 octobre 2003
Statut
Membre
Dernière intervention
20 mars 2007

Actuellement je travaille sur un petit prog en PHP/MySql qui permet une gestion complete d'une newsletter (contacts - mails - statisitques ...). Depuis plusieurs je cherche sur internet comment savoir si une adresse est valide et il y a l air de pas avoir 36.000 solutions, pour ma part je lance un script qui effectue plusieurs verification comme :

expression reguliere, verification du server SMTP (port 25 et 110)

mais le plus fiable est comme l'a precisé Matrey l'envoie d'un mail contenant une image et un lien ( l'image est un bonus car elle renvoie sur script en php, cependant elle n'est pas accepté par tous les services Mail ), pour valider son adresse.

Avec toutes ses données je remplie ma table contact avec un flag (un etat) qui me sert pour envoyer mes mails.
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

=>> monphpcs
Tu dis avoir un script perso qui fonctionnerait du tonnerre... on pourrait en profiter? j'ai regardé ton profil, tu n'a rien publier sur aucun des forum...
Messages postés
16
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
30 novembre 2010

Pour une fois, un script qui semble fonctionner du premier coup !

J'ai comparé les résultats trouvés sur une centaine d'adresses avec les résultats donnés par le logiciel "Fast Email Verifier Professionnal" et les résultats sont malheureusement assez différents.
FEVP n'accepte pas les adresses de Tiscali mais semble bien fonctionner avec les autres, ton script me donne une dizaine d'adresses qui n'existeraient pas alors qu'elles sont données valides avec FEVP ! De plus, une de mes adresses invalide est bien signalée par FEVP mais pas par ton script.

Globalement j'aurais donc tendance a douter de la fiabilité du script !!!
Messages postés
7
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
3 juillet 2004

Le meillleur moyen de vérifier la validité d'une adresse email même si la vérification de la syntaxe est trés incorrecte.
Perso j'ai un script qui vérifie toute une liste d'emails et le résultat est bien plus explicite que adresse correcte ou non, car les choses sont pas si simples que ça ;-)
Messages postés
323
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
17 mai 2005

Pourquoi ça ?

J'en ai testé un en Delphi et le résultat est impeccable.
Il vérifie le domaine, bien sûr, et aussi l'alias.

Ca reste assez lourd à mettre en place mais c'est un moyen de subsistution au mail de confirmation :)
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.