begin process at 2012 05 27 20:50:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > VERIFICATION EMAIL AU NIVEAU SERVEUR MX

VERIFICATION EMAIL AU NIVEAU SERVEUR MX


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Expert Date de création :19/03/2004 Vu :6 162

Auteur : Nykola51

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

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

  • 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;
  • }
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;  
}



 Sources du même auteur

POUR METTRE LE RESULTAT D'UNE REQUETE DANS UN TABLEAU SUR PL...
CALCUL DU TEMPS DE TELECHARGEMENT EN FCT DE LA TAILLE ET DU ...
COUPER UNE CHAINE DE CARACTERE APRES X CARACTERE, ET SANS TR...
CODE D'INSCRIPTION EN IMAGE POUR EVITER LES ROBOTS

 Sources de la même categorie

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj

Commentaires et avis

Commentaire de carpathesknight le 22/03/2004 10:16:02

A noté que ce script ne fonctione que sur des serveurs UNIX.

Commentaire de matrey le 22/03/2004 18:08:03

Relativement fiable, mais - si d'expérience je me souviens bien - si on essaye par exemple avec n'importe quelle adresse @wanadoo.fr çà renverra tjs OK... Le meilleur moyen existant à ce jour est toujours d'envoyer un mail contenant un lien à cliquer pour certifier que l'adresse est correcte et bien consultée par qqun...

Commentaire de pyroflo le 28/03/2004 03:37:58

Un moyen fiable: utiliser un WebService avec un CGI.

Pas tout le monde peut se le permettre c'est vrai mais le résultat est là :)

Commentaire de matrey le 28/03/2004 10:49:43

Je ne suis pas convaincu personnellement par le webservice + CGI...

Commentaire de pyroflo le 28/03/2004 11:43:47

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 :)

Commentaire de monphpcs le 13/06/2004 15:37:11

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 ;-)

Commentaire de zakuli le 29/07/2005 18:32:53

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 !!!

Commentaire de masternico le 26/07/2006 00:25:47

=>>  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...

Commentaire de Noufgrim le 01/08/2006 16:41:31

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales