public function email($message = null)
    {
        $this->setRule(__FUNCTION__, function($email)
                       {
                           if (strlen($email) == 0) return true;
                           $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) {
                                   $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;
                                   }
                               }
                               // check DNS
                               if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
                                   // hmm, the domain has no MX records
                                   if (checkdnsrr('gmail.com',"MX")) {
                                       // but Gmail does. the other domain must be dodgy
                                       $isValid = false;
                                   }
                                   // otherwise: probably running off-line or maybe DNS service is not working
                               }
                           }
                           return $isValid;
                       }, $message);
        return $this;
    }
public function email($message = null)
    {
        $this->setRule(__FUNCTION__, function($email)
                       {
                           if (strlen($email) == 0) return true;
                           $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) {
                                   $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;
                                   }
                               }
                               // check DNS
                               if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
                                   // hmm, the domain has no MX records
                                   if (checkdnsrr('gmail.com',"MX")) {
                                       // but Gmail does. the other domain must be dodgy
                                       $isValid = false;
                                   }
                                   // otherwise: probably running off-line or maybe DNS service is not working
                               }
                           }
                           return $isValid;
                       }, $message);
        return $this;
    }
public function email ( $ message = null ) { $ this -> setRule ( __FUNCTION__ , function ( $ email ) { if ( strlen ( $ email ) == 0 ) return true ; $ 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 ) { $ 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 ; } } // check DNS if ( $ isValid && ! ( checkdnsrr ( $ domain , "MX" ) || checkdnsrr ( $ domain , "A" ) ) ) { // hmm, the domain has no MX records if ( checkdnsrr ( 'gmail.com' , "MX" ) ) { // but Gmail does. the other domain must be dodgy $ isValid = false ; } // otherwise: probably running off-line or maybe DNS service is not working } } return $ isValid ; } , $ message ) ; return $ this ; }
Field, if completed, has to be a valid email address.

@param string $message
@return FormValidator
Field if completed has to be a valid email address .