EmailAddressZend_Validate_EmailAddress permet de valider une adresse émail.
Ce validateur éclate d'abord l'adresse émail entre partie locale et domaine et essaie de
valider ces deux parties conformément aux spécifications des adresses émail et des noms de
domaine.
Utilisation de base
Exemple basique : isValid($email)) {
// l'email est valide
} else {
// l'email est invalide ; afficher pourquoi
foreach ($validateur->getMessages() as $message) {
echo "$message\n";
}
}
]]> Ceci validera l'adresse émail $email et, en cas d'échec,
fournira des messages d'erreur informatifs via
$validator->getMessages().
Parties locales complexesZend_Validate_EmailAddress validera toute adresse émail
conforme à la RFC2822. Comme par exemple bob@domaine.com,
bob+jones@domaine.fr, "bob@jones"@domaine.com et "bob
jones"@domaine.com. Quelques formats d'émail obsolètes ne seront pas validés (comme
tout émail contenant un retour chariot ou un caractère "\").
Validation de différents types de noms de domaine
La partie domaine d'une adresse émail est validée via Zend_Validate_Hostname.
Par défaut, seules les domaines qualifiés sous la forme domaine.com sont
acceptés, même si, il vous est possible d'accepter les adresses IP et les domaines locaux
également.
Afin de réaliser cette opération, il vous faut instancier
Zend_Validate_EmailAddress en lui passant un paramètre indiquant le
type de nom de domaine à accepter. Les détails sont disponibles dans
Zend_Validate_EmailAddress mais vous trouverez ci-dessous un exemple
illustrant comment accepter les noms de domaines qualifiés et les hôtes locaux :
isValid($email)) {
// l'email est valide
} else {
// l'email est invalide ; afficher pourquoi
foreach ($validateur->getMessages() as $message) {
echo "$message\n";
}
}
]]>Vérification que le nom de domaine accepte réellement
l'émail
Le fait qu'une adresse électronique est dans un format correct, ne signifie pas
nécessairement que l'adresse électronique existe en réalité. Pour aider résoudre ce
problème, vous pouvez utiliser la validation MX pour vérifier si une entrée MX (l'émail)
existe dans le l'enregistrement du DNS pour le nom de domaine de l'émail. Cela vous dit que
le nom de domaine accepte l'émail, mais ne vous dit pas que l'adresse électronique elle-même
est valable.
La vérification MX n'est pas active par défaut et est seulement supporté par des
plates-formes UNIX pour l'instant. Pour activer la vérification MX vous pouvez passer un
deuxième paramètre au constructeur Zend_Validate_EmailAddress.
Alternativement vous pouvez passer soit TRUE soit
FALSE à $validator->setValidateMx() pour activer ou désactiver
la validation MX.
En activant ce paramètre, les fonctions de réseau seront utilisés pour vérifier la
présence d'un enregistrement MX sur le nom de domaine de l'adresse électronique que vous
voulez valider. Faîtes cependant attention, cela ralentira probablement votre
scénario.
Valider les noms de domaines internationauxZend_Validate_EmailAddress peut aussi vérifier les caractères
internationaux qui existent dans quelques domaines. Ceci est connu comme le support de Nom
de Domaine International (IDN). Celui-ci est activé par défaut, quoique vous puissiez le
mettre hors service en changeant le paramètre via l'objet interne
Zend_Validate_Hostname qui existe dans
Zend_Validate_EmailAddress. hostnameValidator->setValidateIdn(false);
]]> De plus amples informations concernant l'utilisation de
setValidateIdn() sont présentes dans la documentation de
Zend_Validate_Hostname.
Notez cependant que les IDNs sont seulement validés si vous autorisez la validation
des nom de domaines.
Validation des "Top Level Domains"
Par défaut un nom de domaine sera vérifié grâce à une liste de TLDs connus. Ceci est
activé par défaut, quoique vous puissiez le mettre hors service en changeant le paramètre
via l'objet Zend_Validate_Hostname interne qui existe dans
Zend_Validate_EmailAddress. hostnameValidator->setValidateTld(false);
]]> De plus amples informations concernant l'utilisation de
setValidateTld() sont présentes dans la documentation de
Zend_Validate_Hostname.
Notez cependant que les TLDs sont seulement validés si vous autorisez la validation
des nom de domaines.