DZone: Your Personal Tech Universe PHP Zone
Published on PHP Zone (http://php.dzone.com)
PHP Email Validator - Email MX DNS Record Check
By davidwalsh
Created 2008/03/06 - 2:26pm

Validating an email address is one of the hardest feats on the web. A valid email can be marketing gold, but an invalid email address is dead weight. Not only does it require a CPU-taxing PHP regular expression ("/^[A-z0-9\._-]+"."@" . "[A-z0-9][A-z0-9-]*". "(\.[A-z0-9_-]+)*"."\.([A-z]{2,6})$/"), the regular expression can be useless even after it's validated for format if the domain doesn't exist. A regular expression simply wont do -- we need to think more low-level. What does email at any domain require? A DNS MX record. Well, PHP provides a great solution to validate that there's a MX record for the provided email address' domain.

The Code

function domain_exists($email,$record = 'MX')
{
list($user,$domain) = split('@',$email);
return checkdnsrr($domain,$record);
}

The Usage

if(domain_exists('user@domain.com'))
{
echo('This MX records exists; I will accept this email as valid.');
}
else
{
echo('No MX record exists; Invalid email.');
}

You'll see that 'MX' is the default record check, though you could change that to 'A' if you want. This method is not bulletproof but the function does provide a compelling enough argument for an email existing or being a fraud. If a valid email address is important for your purposes, use this function. Try it for yourself!

Reference: 
PHP Email Validator - Email MX DNS Record Check [1]

Source URL: http://php.dzone.com/news/php-email-validator-email-mx-d

Links:
[1] http://davidwalsh.name/php-email-validator-email-mx-dns-record-check