protected function filterEmail($field, $details, $label, $message) {
        if (!$this->filterString($field, $details, $label, $message)) {
            return false;
        }
        $email = $this->getValue($field);
        $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;
            } elseif (preg_match('/\\.\\./', $domain)) {
                // domain part has two consecutive dots
                $isValid = false;
            } elseif (!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;
            }
        }
        if ($isValid) {
            return true;
        }
        throw new \Exception($message ? $message : $this->translate("This is not an email!"));
    }
protected function filterEmail($field, $details, $label, $message) {
        if (!$this->filterString($field, $details, $label, $message)) {
            return false;
        }
        $email = $this->getValue($field);
        $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;
            } elseif (preg_match('/\\.\\./', $domain)) {
                // domain part has two consecutive dots
                $isValid = false;
            } elseif (!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;
            }
        }
        if ($isValid) {
            return true;
        }
        throw new \Exception($message ? $message : $this->translate("This is not an email!"));
    }
protected function filterEmail ( $ field , $ details , $ label , $ message ) { if ( ! $ this -> filterString ( $ field , $ details , $ label , $ message ) ) { return false ; } $ email = $ this -> getValue ( $ field ) ; $ 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 ; } elseif ( preg_match ( '/\\.\\./' , $ domain ) ) { // domain part has two consecutive dots $ isValid = false ; } elseif ( ! 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 ; } } if ( $ isValid ) { return true ; } throw new \ Exception ( $ message ? $ message : $ this -> translate ( "This is not an email!" ) ) ; }
Check if field value is an email address
@param string $field
@param string [string] $details
@param string $label
@param string $message
@return bool
@throws \Exception
Check if field value is an email address