If you are like me you get tired of constant email bounces from your web apps so I sat down and wrote this simple validator to save the mail server the extra load of having to deal with obvious typos.
// email Validator // returns 1 on success // return -1 if the email is not in the correct format // return -2 if the email doesn't resolve function check_email($email) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return (-1) ; } list($username, $domain) = explode('@', $email); //as per the RFC: check the domain for an MX record or A record and allow for IPv6 addresses if (!checkdnsrr($domain, 'MX') && !checkdnsrr($domain, 'A') && !checkdnsrr($domain, 'AAAA')) { return (-2) ; } return (1) ; }
Here is a quick example of how to call it:
$ret = check_email($h_email) ; if ($ret > 0) { echo "valid email<br>" ; } else { echo "error: " ; if($ret == -1 ){ echo "invalid format<br>" ; } if($ret == -2 ) { echo "does not resolve<br>" ; } }