Dirección de EmailZend_Validate_EmailAddress Le permite validar una dirección
de email. El validador primero divide la dirección de email en la parte
local @ nombre de host e intenta igualar a estos contra especificaciones
conocidas para direcciones y nombres de host para el correo electrónico.
Utilización básica
Un ejemplo básico de uso se ve a continuación:
isValid($email)) {
// El email parece ser válido
} else {
// El email es inválido; muestre las razones
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>
Esto coincide con el correo electrónico $email y si fracasa,
alimenta $validator->getMessages() con mensajes de error útiles.
Partes locales complejasZend_Validate_EmailAddress se comparará con cualquier
dirección de correo válida de acuardo a RFC2822.
Por ejemplo, correos electrónicos válidos incluyen bob@domain.com ,
bob+jones@domain.us , "bob@jones"@domain.com y
"bob jones"@domain.com
Algunos formatos obsoletos de email actualmente no validan
(por ejemplo los retornos de carro o "\" un caracter en una dirección
de correo electrónico).
Validar diferentes tipos de nombres de host
La parte nombre de host de una dirección de correo es validado contra
Zend_Validate_Hostname.
Por defecto sólo son aceptados nombres de host DNS de la forma
domain.com, aunque si lo desea también puede aceptar
direcciones IP y nombres de host locales.
Para ello necesita instanciar a Zend_Validate_EmailAddress
pasando un parámetro para indicar el tipo de nombres de host que quiere aceptar.
Más detalles están incluidos en Zend_Validate_EmailAddress,
aunque abajo hay un ejemplo de cómo aceptar tanto nombres de host DNS y
locales:
isValid($email)) {
// email parece ser válido
} else {
// email es inválido; muestre las razones
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
]]>Verificar si el nombre de host realmente acepta email
Sólo porque una dirección de correo electrónico está en el formato correcto,
no necesariamente significa que esa dirección de correo electrónico
existe realmente. Para ayudar a resolver este problema, puede usar la
validación MX para comprobar si existe una entrada MX (email) en el
registro DNS para correo electrónico en ese nombre de host.
Esto le dice que el nombre de host acepta email, pero no le dice si la
dirección de correo electrónico exacta es válida en si misma.
La comprobación MX no está activada por defecto y en este momento es
soportada sólo por plataformas UNIX.
Para habilitar el control MX puede pasar un segundo parámetro al
constructor Zend_Validate_EmailAddress.
Alternativamente, para activar o desactivar la validación MX puede pasar
true o false a $validator->setValidateMx().
Al habilitarlo, se usarán las funciones de red para comprobar
la presencia de un registro MX en el nombre de host de la dirección
de correo electrónico que desea validar.
Tenga en cuenta esto probablemente hará más lento su script.
Validating International Domains NamesZend_Validate_EmailAddress también comparará caracteres
internationales que existen en algunos dominios.
Esto se conoce como soporte de International Domain Name (IDN).
Está activado por defecto, aunque puede deshabilitarlo internamente
cambiando el ajuste a través del objeto Zend_Validate_Hostname
que existe en Zend_Validate_EmailAddress.
hostnameValidator->setValidateIdn(false);
]]>
Sobre el uso de setValidateIdn() encontrará más información
en la documentación de Zend_Validate_Hostname.
Tenga en cuenta que los IDNs se validarán solo si
usted permite que nombres de host DNS sean validados.
Validar Dominios de Nivel Superior (TLD)
Por defecto, un nombre de host se cotejará con una lista conocida de TLDs.
Está activado por defecto, aunque puede deshabilitarlo cambiando el
ajuste a través del objeto interno Zend_Validate_Hostname
que existe en Zend_Validate_EmailAddress.
hostnameValidator->setValidateTld(false);
]]>
Encontrará más información sobre el uso de setValidateTld()
en la documentación de Zend_Validate_Hostname.
Tenga en cuenta que los TLDs se validarán solo si
usted permite que nombres de host DNS sean validados.