mjouan
mardi 10 juin 2008 à 16:52
Tu peux, en plus d'une vérification par expression régulière, vérifier la présence de MX sur le domaine de l'adresse email fournie.
Le script suivant (source:
http://www.commentcamarche.net/forum/affic...sse-mail-en-php ), vérifie en plus de cela que le serveur de mail est bien accessible, selon moi il va un peu trop loin car le serveur peut être temporairement in oignable sans pour autant que l'adresse soit erronée.
CODE
function checkEmail($email) {
// checks proper syntax
if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
// gets domain name
list($username,$domain)=split('@',$email);
// checks for if MX records in the DNS
if(!customCheckDnsrr($domain)) {
return false;
}
// attempts a socket connection to mail server
if(!fsockopen($domain,25,$errno,$errstr,30)) {
return false;
}
return true;
}
return false;
}
function customCheckDnsrr($host,$recType='') {
if(!empty($host)) {
if($recType=='') $recType="MX";
exec("nslookup -type=$recType $host",$output);
foreach($output as $line) {
if(preg_match("/^$host/", $line)) {
return true;
}
}
return false;
}
return false;
}
Marc