Seems like everyone and their brother has published one of these. We're doing the same, combining two different methods we've seen. A regular expression to match most email addresses, exotic ones would likely be missed. Then a dns lookup is done, to validate their domain.

function is_valid_email($mail)
    // Match Email Address Pattern
    if (preg_match('/^([\w\.\%\+\-]+)@([a-z0-9\.\-]+\.[a-z]{2,6})$/i',trim($mail),$m)) {
        // More strict is to only check MX, we do both in example
        if ( (checkdnsrr($m[2],'MX') == true) || (checkdnsrr($m[2],'A') == true) ) {
            // host found!
            return true;
    return false;