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; }