Tester addresse mail en PHP
Résolu/Fermé
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
-
28 avril 2005 à 14:59
kmedini - 30 juil. 2012 à 12:02
kmedini - 30 juil. 2012 à 12:02
A voir également:
- Mail tester
- Yahoo mail - Accueil - Mail
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
16 réponses
P@
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
185
2 juin 2006 à 12:09
2 juin 2006 à 12:09
en faisant des recherches sur fsockopen j'ai trouvé ce script qui aprés l'avoir testé me va trés bien ... si ca peut servir :D
origine de script avant modification http://fr3.php.net/getmxrr
et l'appelle toujours :
origine de script avant modification http://fr3.php.net/getmxrr
function validate_email($email){ $mailparts=explode("@",$email); $hostname = $mailparts[1]; // validate email address syntax $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$"; $b_valid_syntax=eregi($exp, $email); // get mx addresses by getmxrr $b_mx_avail=getmxrr( $hostname, $mx_records, $mx_weight ); $b_server_found=0; if($b_valid_syntax && $b_mx_avail){ // copy mx records and weight into array $mxs $mxs=array(); for($i=0;$i<count($mx_records);$i++){ $em1 = array_pop($mx_weight); $em2 = array_pop($mx_records); $mxs[$em1]=$em2; } // sort array mxs to get servers with highest prio ksort ($mxs, SORT_NUMERIC ); reset ($mxs); while (list ($mx_weight, $mx_host) = each ($mxs) ) { if($b_server_found == 0){ //try connection on port 25 $fp = @fsockopen($mx_host,25, $errno, $errstr, 2); if($fp){ $ms_resp=""; // say HELO to mailserver $ms_resp.=send_command($fp, "HELO microsoft.com"); // initialize sending mail $ms_resp.=send_command($fp, "MAIL FROM:<support@microsoft.com>"); // try receipent address, will return 250 when ok.. $rcpt_text=send_command($fp, "RCPT TO:<".$email.">"); $ms_resp.=$rcpt_text; if(substr( $rcpt_text, 0, 3) == "250") $b_server_found=1; // quit mail server connection $ms_resp.=send_command($fp, "QUIT"); fclose($fp); } } } } return $b_server_found; } function send_command($fp, $out){ fwrite($fp, $out . "\r\n"); return get_data($fp); } function get_data($fp){ $s=""; stream_set_timeout($fp, 2); for($i=0;$i<2;$i++) $s.=fgets($fp, 1024); return $s; } // support windows platforms if (!function_exists ('getmxrr') ) { function getmxrr($hostname, &$mxhosts, &$mxweight) { if (!is_array ($mxhosts) ) { $mxhosts = array (); } if (!empty ($hostname) ) { $output = ""; @exec ("nslookup.exe -type=MX $hostname.", $output); $imx=-1; foreach ($output as $line) { $imx++; $parts = ""; if (preg_match ("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts) ) { $mxweight[$imx] = $parts[1]; $mxhosts[$imx] = $parts[2]; } } return ($imx!=-1); } return false; } }
et l'appelle toujours :
Function ControleContact($email,$nomorganisation,$service,$fonction){ $msg=""; $email = trim($email); if(empty($nomorganisation)): $msg .= "Le champs <B>Nom de l'organisation</B> est obligatoire<BR>"; endif; if(!is_string($nomorganisation)) $msg .= "Le champs <B>Nom de l'organisation</B> doit être une chaine de caractére<BR>"; if(empty($service)) $msg .= "Au moins une case <B>service</B> doit être cochée<BR>"; if(empty($fonction)) $msg .= "Une <B>fonction</B> doit être séléctionnée<BR>"; if(empty($email)) $msg .="Le champ <B>email</B> est obligatoire<BR>"; elseif(!ereg("^(.+)@(.+)\\.(.+)$",$email)) $msg .="Le champ <B>email</B> est obligatoire 22<BR>"; elseif(validate_email($email) == 0) { echo 'Invalid email address!'; $msg .='Invalid email address!'; } else { echo 'Email address is valid'; } return ($msg); }
P@
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
185
12 juin 2006 à 11:12
12 juin 2006 à 11:12
j'ai des souci avec la fonction getmxrr voici son code ...
je ne comprend pas
il me renvoie quasi tout le temps false et va savoir pourquoi avec la même adresse si la trouve vraie !!!
si quelqu'un pouvait m'aider ... merci :D
je ne comprend pas
// support windows platforms if (!function_exists ('getmxrr') ) { function getmxrr($hostname, &$mxhosts) { if (!is_array ($mxhosts) ) { $mxhosts = array (); } if (!empty ($hostname) ) { echo "$hostname n'est pas vide !!<br>"; $output = ""; @exec ("nslookup.exe -type=MX $hostname.", $output); $imx=-1; foreach ($output as $line) { $imx++; $parts = ""; if (preg_match ("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts) ) { // $mxweight[$imx] = $parts[1]; $mxhosts[$imx] = $parts[2]; } } return ($imx!=-1); } return false; } }
il me renvoie quasi tout le temps false et va savoir pourquoi avec la même adresse si la trouve vraie !!!
si quelqu'un pouvait m'aider ... merci :D
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
2 juin 2006 à 11:29
2 juin 2006 à 11:29
Voui, il y a des erreurs dans le code. Il y a des espaces inutiles dans l'expression régulière. Je me rappelle que j'ai du corriger quelques erreurs dans le code.
Johan
<?php /** * Check validity of e-mail * * @param string email * @return boolean */ function checkemail($email) { define('TIMEOUT', '5'); define('SMTP_PORT', '25'); // see http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/2/ // checks proper syntax if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email)) { //printf('%s: %d<br />', __FILE__, __LINE__); return false; } // gets domain name list($username,$domain)=split('@',$email); // checks for if MX records in the DNS $mxhosts = array(); if(!getmxrr($domain, $mxhosts)) { // no mx records, ok to check domain if (!@fsockopen($domain, SMTP_PORT, $errno, $errstr, TIMEOUT)) { .....
Johan
Bonjour,
J'ai été blacklisté après 2 jours d'utilisation du script ci-dessus http://www.commentcamarche.net/forum/affich 1478518 tester addresse mail en php#14
Avez-vous le même problème ?
J'ai été blacklisté après 2 jours d'utilisation du script ci-dessus http://www.commentcamarche.net/forum/affich 1478518 tester addresse mail en php#14
Avez-vous le même problème ?
bonjour,
moi ce que je propose de faire est de créer dans ta base de donné dans ton tableau utilisateur deux colonne que tu nommera verifemail et verifemail2 par exemple.
la première colonne contiendra une valeur que tu attribuera a ton utilisateur lors de son inscription de façons aleatoire
par ex: dtfrc
tu lui envoie un email de confirmation dans lequel tu lui mais un URL dans laquel il rentrera son login et la valeur de verifemail que tu stockera dans verifemail2. si la valeur dans verifemail2 et la meme que dans verifemail alors il a bien eu et lu ton mail si il n'y a rien dans verifemail2 alors il n'a pas fait valider sont email donc ce qu'il te suffira de faire c'est de temps en temps ou avec un timer supprimé tout les lignes de tableau dans les quelles Verifemail2 sera null.
il faut biensur testé la validité de verifemail2 dans la pages sur laquelle tu l'a redirigé a travers ton mail de verification sinon il pourrais mettre des valeurs quelconque qui seront accepté et se connecté tant que tu n'aura pas supprimé sont login mais bon c juste un test pour la logique. parceque si il n'a pas ton mail il n'a pas l'URL donc pas de verifemail2 .
je ne l'ai pas encore testé mais en théorie sa devrait marché
si quelqu"un a une idée dans ce sens sa peut servir
moi ce que je propose de faire est de créer dans ta base de donné dans ton tableau utilisateur deux colonne que tu nommera verifemail et verifemail2 par exemple.
la première colonne contiendra une valeur que tu attribuera a ton utilisateur lors de son inscription de façons aleatoire
par ex: dtfrc
tu lui envoie un email de confirmation dans lequel tu lui mais un URL dans laquel il rentrera son login et la valeur de verifemail que tu stockera dans verifemail2. si la valeur dans verifemail2 et la meme que dans verifemail alors il a bien eu et lu ton mail si il n'y a rien dans verifemail2 alors il n'a pas fait valider sont email donc ce qu'il te suffira de faire c'est de temps en temps ou avec un timer supprimé tout les lignes de tableau dans les quelles Verifemail2 sera null.
il faut biensur testé la validité de verifemail2 dans la pages sur laquelle tu l'a redirigé a travers ton mail de verification sinon il pourrais mettre des valeurs quelconque qui seront accepté et se connecté tant que tu n'aura pas supprimé sont login mais bon c juste un test pour la logique. parceque si il n'a pas ton mail il n'a pas l'URL donc pas de verifemail2 .
je ne l'ai pas encore testé mais en théorie sa devrait marché
si quelqu"un a une idée dans ce sens sa peut servir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
1 juin 2006 à 14:42
1 juin 2006 à 14:42
Tu trouveras du code et des explications intéressantes
ici: http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/2
Johan
ici: http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/2
Johan
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
28 avril 2005 à 16:27
28 avril 2005 à 16:27
ben à part lui envoyer un mail, je vois pas trop comment tu peux faire ça... faudrait voir avec le protocole smtp si c'est prévu, et comment fonctionne le serveur mail.
A priori le seul moyen d'être sur que l'adresse est valide est effectivement d'envoyer un mail et d'attendre la réponse.
Autrement les spammeurs seraient trop contents! Le fait qu'un serveur de ne réponde pas concernant la validité du mail constitue une protection contre le spam il me semble.
Autrement les spammeurs seraient trop contents! Le fait qu'un serveur de ne réponde pas concernant la validité du mail constitue une protection contre le spam il me semble.
P@
Messages postés
1709
Date d'inscription
vendredi 7 juillet 2000
Statut
Membre
Dernière intervention
24 mars 2009
185
2 juin 2006 à 10:40
2 juin 2006 à 10:40
est ce que ca marche pour vous ???
je viens de le mettre en place .. et soit tout passe, soit rien ne passe !!!
Je fais des modif ... mais pour l'instant c'est pas glorieux ... si vous avez des idées :D
j'utilise :
je viens de le mettre en place .. et soit tout passe, soit rien ne passe !!!
Je fais des modif ... mais pour l'instant c'est pas glorieux ... si vous avez des idées :D
j'utilise :
function checkEmail($email) { // checks proper syntax if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) { // gets domain name list($username,$domain)=split('@',$email); // checks for if MX records in the DNS if(!customCheckDnsrr($domain)) { return false; } // attempts a socket connection to mail server if(!fsockopen($domain,25,$errno,$errstr,30)) { return false; } return true; } return false; } function customCheckDnsrr($host,$recType='') { if(!empty($host)) { if($recType=='') $recType="MX"; exec("nslookup -type=$recType $host",$output); foreach($output as $line) { if(preg_match("/^$host/", $line)) { return true; } } return false; } return false; }et pour l'appel
Function ControleContact($email,$nomorganisation,$service,$fonction){ $msg=""; if(empty($nomorganisation)): $msg .= "Le champs <B>Nom de l'organisation</B> est obligatoire<BR>"; endif; if(!is_string($nomorganisation)) $msg .= "Le champs <B>Nom de l'organisation</B> doit être une chaine de caractére<BR>"; if(empty($service)) $msg .= "Au moins une case <B>service</B> doit être cochée<BR>"; if(empty($fonction)) $msg .= "Une <B>fonction</B> doit être séléctionnée<BR>"; if(empty($email)) $msg .="Le champ <B>email</B> est obligatoire<BR>"; else /* ** C'est là que commence réellement l'appel */ $email = trim($email); if(!checkEmail($email)) { echo 'Invalid email address!'; $msg .='Invalid email address!'; } else { echo 'Email address is valid'; } /* ** C'est là que fini réellement l'appel */ return ($msg); }
bacchuss
Messages postés
1162
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
6 avril 2009
190
28 avril 2005 à 15:17
28 avril 2005 à 15:17
Salut,
oui en javascript ca existe, c'est deja tout fait sur les sites de script javascript...
oui en javascript ca existe, c'est deja tout fait sur les sites de script javascript...
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 avril 2005 à 15:21
28 avril 2005 à 15:21
oki, merci bien de cette précision.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 avril 2005 à 16:06
28 avril 2005 à 16:06
J'ai beau cherché je trouve pas... c'est quoi l'adresse du site ou tu as vu le truc ?
bacchuss
Messages postés
1162
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
6 avril 2009
190
28 avril 2005 à 16:15
28 avril 2005 à 16:15
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 avril 2005 à 16:21
28 avril 2005 à 16:21
Dsl de m'etre mal exprimé : valider la syntaxe d'une adresse amil, ca je sais faire, mais moi je voudrait tester si l'adresse correspond bien à une adresse qui existe en fait.
superjojo01
Messages postés
459
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
7 juin 2009
36
4 janv. 2009 à 13:48
4 janv. 2009 à 13:48
Bonjour, si il est possible de le savoir car si l'adresse n'est pas utiliser tu reçois un message "delivrius"
Luffy =)
Messages postés
365
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
19 mai 2006
110
28 avril 2005 à 16:35
28 avril 2005 à 16:35
Le fait qu'un serveur de ne réponde pas concernant la validité du mail constitue une protection contre le spam il me semble.
bien joué ! j'y avais pas pensé
Le seul moyen que j'ai trouvé est de se connecter au serveur smtp du domail de l'email et de faire un debut d'envoie de mail, au momentde valider l'adresse on auras une reponse du serveur sur l'existance ou non de cette adresse.
>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <admin@gmail.com>
<<< 550 5.7.1 No such user w40si448162ugc
>>> RSET
adresse inexistante
>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <diemaster@gmail.com>
<<< 250 2.1.5 OK
>>> RSET
adresse existante
>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <admin@gmail.com>
<<< 550 5.7.1 No such user w40si448162ugc
>>> RSET
adresse inexistante
>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <diemaster@gmail.com>
<<< 250 2.1.5 OK
>>> RSET
adresse existante
hello
alors ce script parait sympa de prime abord...mais ne marche pas...voici le résultat avec une adresse email invalide (domaine ok, mais user inconnu):
MAIL FROM:<support@microsoft.com>
250 ok
RCPT TO:<fauxuser@mondomaine.com>
250 ok
QUIT
221 nsxxxxx.ovh.net
Email address is valid
des idées ?
merci
alors ce script parait sympa de prime abord...mais ne marche pas...voici le résultat avec une adresse email invalide (domaine ok, mais user inconnu):
MAIL FROM:<support@microsoft.com>
250 ok
RCPT TO:<fauxuser@mondomaine.com>
250 ok
QUIT
221 nsxxxxx.ovh.net
Email address is valid
des idées ?
merci
slt tout le monde je veut un programme en php de recherche mon site est un revue scientifique et je veut soummetre un article dans ce revue et je veut faire la recherche svp aide moi avec un programme simple.merci .
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
28 avril 2005 à 16:36
28 avril 2005 à 16:36
C'est vrai.
merci pour vos réponses.
++
merci pour vos réponses.
++