1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| function mailCheck($Email)
{
// L'adresse email doit être correctement formattée
if(!eregi("^[[:alpha:]]{1}[[:alnum:]]*((\.|_|-)[[:alnum:]]+)*@[[:alpha:]]{1}[[:alnum:]]*((\.|-)[[:alnum:]]+)*(\.[[:alpha:]]{2,})$", $Email))
exit('L\'adresse '.$Email.' est mal formatée');
// On récupère le domaine
list(,$domain ) = split('@',$Email);
// On cherche des enregistrements MX dans les DNS
if (getmxrr($domain, $MXHost))
$ConnectAddress = $MXHost[0];
else
$ConnectAddress = $domain;
// On créé la connexion sur le port smtp (25)
$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);
// Si le code renvoyé par la commande RCPT TO est 250 ou 251 (cf: RFC)
// Alors l'adresse existe
if (!ereg ("^250", $To) && !ereg ( "^251", $To ))
// Adresse rejetée par le serveur
return false;
else
// Adresse acceptée par le serveur
return true;
}else{
// Le serveur n'a pas répondu
return false;
}
}else{
// Connexion au serveur de messagerie impossible
// vous pouvez afficher le message d'erreur en décommentant la ligne suivante:
// echo $errno."-".$errstr;
return false;
}
}
if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1") ) { // enregistrement des données
// Définissez ici l'adresse à vérifier
$mail = 'test@test.com';
$mail = $_POST['mail'] ;
if(mailCheck($mail))
echo 'L\'adresse existe';
else
echo 'L\'adresse n\'existe pas ou une erreur est survenue';
} |
Partager