Contr么le e-mail via MX

Snippet pour v茅rifier un email au niveau serveur mx

Ce code permet, si votre h茅bergement permet les sockets, de v茅rifier la validit茅 d’une adresse email au niveau serveur. Donc, une adresse de forme xxx@xxx.com sera peut 锚tre bonne au niveau syntaxe, mais renverra une erreur, car non connu au niveau du serveur MX

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