[edit: typo]
Hmm, zou ik niet doen, dan ga je er vanuit dat wanneer iemand een webserver heeft iemand ook een mailserver heeft. En dat de webserver op het zelfde adres als de mailserver draait raden we maar?! 404 krijg je overigens alleen wanneer je al een verbinding met een http server gemaakt hebt, en hij dus wel moet bestaan ;)
Beter aanpak is om via het/een MX record op port 25 te vragen of een mail adres bestaat. Qmail en anderen geven dan altijd een "ja, bestaat" aanpak, maar sendmail wil nog wel eens vrijgeven of het adres echt bestaat.
Deze functie zal ongeveer zijn wat je zoekt. Deze doet alleen niet babbelen met de SMTP server, als er een MX record bestaat is het genoeg.
<?
/**
* Validate a email
*
* @param string $email URL to validate
* @param boolean $domain_check Check or not if the domain exists
*/
function email($email, $check_domain = false)
{
if($check_domain){
}
if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email))
{
if ($check_domain && function_exists('checkdnsrr')) {
list (, $domain) = explode('@', $email);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;
}
return true;
}
return false;
}
?>
Bron: pear.php.net
?
Onbekende gebruiker
18-03-2004 17:50
had zelf zoiets in gedachtten maar weet niet hoe ik het uitvoer.
via MX record is idd beter maar helaas werkt checkdnsrr lang niet op elke server (ook op linux/unix servers werkt het niet altijd heb ik gemerkt) vandaar dat ik zei gewoon kijken of het domein bestaat want dan zal er ook wel een mailserver zijn
het is namelijk verplicht om een mailserver te draaien als je een domein hebt
of je moet een script gaan schrijven dat dat ook opvangt maar dat kost teveel tijd en moeite
Nee hoor. Het is totaal niet verplicht om een mailserver te draaien, hoeveel voorbeelden van domeinen die geen mail ontvangen wil je? Of denk je dat de DNS-politie acht ej aankomt als je je MX record uit je zonefile knalt?
Bij het bovenstaande voorbeeld kan je wel of niet kiezen voor het checken van DNS, als je een bak hebt met rotte DNS-config smijt je 'm er lekker uit, maar dan moet je ook niet verwachten dat ie op andere manier binnen php miraculeus wel resolved.
?
Onbekende gebruiker
06-10-2004 02:32
My name is Tanase Laurentiu , i'm from Romania and i build CheckMail . Take at look : http://expert.no-ip.org , it is new CheckMail - PHP Extension for PHP 4.3.8 under OS Windows . Enjoy :-)