Vérifier la validité d'une adresse email en php Par JarodxXx
le lundi 7 juillet 2008, 10:01
Voici une fonction simple et efficace qui permet de vérifier la validité d'une adresse email .. elle vérifie d'abord la synatxe (xxxx+@+xxx+.+xxx ) puis va vérifier les enregistrements MX grâce à getmxrr d'un hôte, par exemple pour toto@gmail.com , la syntaxe est bonne et gmail.com est correctement enregistré
[PHP]
<?php
function CheckEmailer( $mail )
{
if ( eregi( '^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]', $mail ) ) {
return false;
}
list( $Username, $Domain ) = explode( '@', $mail );
if ( getmxrr( $Domain, $MXHost ) ) {
return true;
} else {
return false;
}
}
?>

















Ziki
Dailymotion
Flickr
Technorati
Twitter
1. Le lundi 7 juillet 2008, 11:54 par Kerweb
Je n'ai pas testé ce script. J'en a fais un "maison" et une suggestion à ajouter car j'ai eu ce cas à traiter : faire un test sur l'extension, où tout du moins la "taille". Par exemple si on met xxx@nomblabla.fr, vérifier qu'il y a au moins 2 caractères après le point.
Mais peut être que cette fonction getmxrr prend déjà ça en compte ? (même pour les hôtes du type @nomdelasociete.com ?)
2. Le lundi 7 juillet 2008, 11:54 par Damien
Et tu zappe toutes les adresses en xx@xx.xx.xx
Dommage. Il y en a quelques unes. Toutes les co.uk etc.
3. Le lundi 7 juillet 2008, 12:13 par plus
On la rentre ou l'adresse?
4. Le lundi 7 juillet 2008, 12:23 par ieur
Pourriez-vous me faire un exemple?
5. Le lundi 7 juillet 2008, 12:31 par jarodxxx
En parametre !!!
if ( CheckEmailer( 'toto@gmail.com' ){ echo 'mail valid';}
6. Le lundi 7 juillet 2008, 15:50 par Palleas
eregi, eregi... C'est pas la fonction qui disparait avec PHP 6 et qu'il ne faut pas utiliser parce que plus lente qu'un preg_match() ?
Ah bah si tiens ! :D
7. Le lundi 7 juillet 2008, 16:02 par Tommy
Pour tester la syntaxe d'une adresse mail, j'utilise plutôt filter_var() qui possède un paramètre pour tester le cas de l'email.
Ca m'évite de devoir jouer avec les expreg et de penser à tous les cas de figure.
8. Le lundi 7 juillet 2008, 17:06 par SuN
Faudrait surtout pouvoir tester la validité d'une adresse email de ce type: qsdgfqsdgqghsdfgsd@gmail.com ...
9. Le lundi 7 juillet 2008, 17:49 par jarodxxx
@Sun je doute que soit possible
10. Le lundi 7 juillet 2008, 21:48 par Fanou
Si cela est possible...
Le temps de trouver cela, et je partage
11. Le mardi 8 juillet 2008, 14:07 par vanno
c'est possible de faire
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('example.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
?>
saloute
12. Le mardi 8 juillet 2008, 14:32 par Emacs
+1 pour filter_var()
13. Le mardi 15 juillet 2008, 00:21 par Ishiro
Je veux bien, mais d'après la doc PHP pour getmxrr() :
"Note: Cette fonction ne doit pas être utilisée à des fin de vérification d'adresses. Seuls les serveurs de mails trouvés dans les enregistrements DNS sont retournés. Suivant la » RFC 2821 lorsque aucun serveur de mail n'est listé, hostname doit être utilisé comme serveur de mail, avec la priorité 0."
Hum, hum...
14. Le vendredi 8 août 2008, 21:36 par mimi
ahlalalala!
15. Le lundi 18 août 2008, 09:47 par Sebou
Super utile comme tuto même si la solution postée en comm' est plus efficace.
Encore une raison de plus pour forcer les réticents à passer sous PHP5 !
http://www.deefuz.net
16. Le dimanche 31 août 2008, 12:40 par ibrahim
ceci est un test
17. Le dimanche 31 août 2008, 14:16 par bob
t nul
18. Le mardi 16 septembre 2008, 22:39 par test
dsvdsv
19. Le mardi 7 octobre 2008, 01:08 par dsvdsvdsv
zae
20. Le jeudi 29 janvier 2009, 13:52 par france
bien
21. Le mardi 18 août 2009, 23:11 par Funnycat
Bonjour. Ce tuto est vraiment génial, mais je me permet de mettre mon grain de sel. J'ai constaté que sur le manuel PHP de la fonction getmxrr (voir: http://fr.php.net/manual/fr/functio...) il est écrit:
"Cette fonction ne doit pas être utilisée à des fin de vérification d'adresses."
Y a t'il un problème particulier pour que le manuel PHP indique cela.
Merci de votre éventuel réponse.
Cordialement.
22. Le mardi 12 janvier 2010, 11:56 par lol
mouai...