Voila le Script que j'utilise pour tester la validité des adresses mails, il tourne sur mon NAS avec Apache 2.4 et PHP 7.
if (isset($_GET) && is_array($_GET)) {
foreach ($_GET as $key => $value) {
$_GET[$key] = htmlentities($value, ENT_QUOTES);
}
}
$mail = $_GET['adn'];
function mailCheck($Email)
{
// L'adresse email doit être correctement formattée
if(!filter_var($Email, FILTER_VALIDATE_EMAIL)){
return false;
}
// On récupère le domaine
list(,$domain ) = explode('@',$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(25)
$Connect = @fsockopen($ConnectAddress,25,$errno,$errstr);
if($Connect)
{
if(preg_match('[^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
// Alors l'adresse existe
if (!preg_match("[^250]", $To) && !preg_match ( "[^251]", $To ))
// Adresse rejetée par le serveur
return false;
else {
return true; }
}else{
// Le serveur n'a pas répondu
return false;
}
}else{
// Connexion au serveur de messagerie impossible
return false;
}
}
if(mailCheck($mail))
echo 'true';
else
echo 'false';