Last updated June 7, 2014. Created on March 29, 2010.
Edited by acabouet, danjuls, silverwing, anbuece. Log in to edit this page.

Use the following function to validate the email address with valid domain.It returns TRUE on success and FALSE on failure.

Eg:
anbu_rajendran@yahoo.co.in is a valid email.

abc@abc.com is not a valid email.

/**************************************/

function email_validate($email) {
  $isValid = true;
  $atIndex = strrpos($email, "@");
  if(is_bool($atIndex) && !$atIndex) {
    $isValid = false;
  }
  else {
   $domain = substr($email, $atIndex+1);
   $local = substr($email, 0, $atIndex);
   $localLen = strlen($local);
   $domainLen = strlen($domain);
   if($localLen < 1 || $localLen > 64) {
      // local part length exceeded
      $isValid = false;
   } else if($domainLen < 1 || $domainLen > 255) {
     // domain part length exceeded
     $isValid = false;
   } else if($local[0] == '.' || $local[$localLen-1] == '.') {
     // local part starts or ends with '.'
     $isValid = false;
   } else if(preg_match('/\\.\\./', $local)) {
      // local part has two consecutive dots
      $isValid = false;
   } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
       // character not valid in domain part
       $isValid = false;
   } else if(preg_match('/\\.\\./', $domain)) {
       // domain part has two consecutive dots
       $isValid = false;
   } else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\","",$local))) {
       // character not valid in local part unless
       // local part is quoted
       if (!preg_match('/^"(\\"|[^"])+"$/', str_replace("\\","",$local))) {
         $isValid = false;
       }
   }
   if($isValid && !(checkdnsrr($domain,"MX") ||  checkdnsrr($domain,"A"))) {
      // domain not found in DNS
      $isValid = false;
    }
   }
   return $isValid;
}

/********************************/

Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.