Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2011, 17h21   #1
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Par défaut Tester existence mail via socket

Bonjour,

Pour tester l'existence d'une adresse email (pour éviter des inscriptions complètement bidon sur mon site), j'ai trouvé le script suivant, mais il plante et je ne trouve pas la provenance de l'erreur.

Je tourne en local sous Windows XP.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function mailTester($mail)
 {
  if(preg_match("#^(.*)@(.*\.[a-z]{2,4})$#i", $mail, $ret))
   {
    $r = 0;
 
    $socket = socket_create(AF_INET, SOCK_STREAM, 0);
    getmxrr($ret[2], $r);
 
    if(count($r) == 0)
     {//try to connect directly to the server
      @fsockopen($ret[2],"25",$er1,$er2,0.5); //can't use it with socket :s
 
      if($er1>0)
       return -3;//no mx server and no smtp server
 
      $r[0]=$ret[2];
     }
 
    if(!socket_connect($socket,$r[0],"25"))
     return -2;//can't connect
 
    socket_recv($socket, $retour, 1024, 0);
    $ret = getCodeMsg($retour);
 
    if($ret[0] != 220)
     return -4;
 
    socket_write($socket, "EHLO voo.be\n");
    socket_recv($socket, $retour,1024,0);
 
    $ret=getCodeMsg($retour);
 
    if($ret[0] != 250)
     return -7;
 
    socket_write($socket, "MAIL FROM: <mon_adresse@voo.be>\n");
    socket_recv($socket, $retour, 1024, 0);
    $ret=getCodeMsg($retour);
 
    if($ret[0]!=250)
     return -5;
 
    socket_write($socket, "RCPT TO: <".$mail.">\n");
    socket_recv($socket, $retour, 1024, 0);
    socket_write($socket, "quit\n");
    $ret = getCodeMsg($retour);
    socket_close($socket);
 
    if($ret[0]==250)
     return 1;
    else
     return -6;
   }
 
  return -1;//not an adress mail
 }
 
function getCodeMsg($ret)
 {
  preg_match("#^([0-9]+) (.*)$#im", $ret, $tab);
  array_shift($tab);
 
  return $tab;
 }
Merci d'avance pour votre aide
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h32   #2
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Apparemment, mais sans en être certain, j'aurais déjà un problème à ce niveau :

Code :
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h39   #3
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Autant pour moi, je n'avais pas activé l'extension php_sockets.

Cependant, maintenant, j'ai la valeur de retour '-2', ce qui signifie que la connexion au socket ne peut se faire.

D'ailleurs, lorsque je fais :

Code :
1
2
3
if(!socket_connect($socket, $r[0], "25"))
     {echo socket_strerror(socket_last_error($socket)); return -2;//can't connect
     }
j'obtiens le message :

"Une tentative de connexion a �chou� car le parti connect� n'a pas r�pondu convenablement au-del� d'une certaine dur�e ou une connexion �tablie a �chou� car l'h�te de connexion n'a pas r�pondu."
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 21h34   #4
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 811
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 811
Points : 1 530
Points : 1 530
Tous les serveurs ne répondent pas, d'ailleurs c'est le cas pour plus de 80% des serveurs.
Vérifier l'existence réelle d'une adresse email ne se fait pas aussi facilement et est souvent une perte de temps.

Pour ma part je préfères une table temporaire, avec purge quotidienne, avec l'envoi d'un email contenant un lien permettant de valider les informations temporaires et les rendre persistantes.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 22h47   #5
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Bonjour et merci beaucoup pour ta réponse.

De fait, s'il ne s'agissait que de la création de faux comptes, je ne traiterais cela que via des purges périodiques. Cependant, vu que c'est un site dépôt d'annonces payantes, afin de ne pas perturber l'annonceur dans sa démarche de déposer une annonce, directement après la création de son compte (temporaire qui devra être confirmé par la suite via un lien dans un email), je l'amène directement sur le module de dépôt d'une annonce. Donc, si je laisse cours à la création de faux compte, je laisse également cours à de fausses annonces, voir plus... ce qui m'ennuie plus. Ce pourquoi je désirais pouvoir vérifier l'existence de l'adresse de messagerie.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 23h33   #6
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 811
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 811
Points : 1 530
Points : 1 530
Dans tous les cas c'est impossible suivant le fournisseur de l'email pour la simple et bonne raison que la seule façon sûre d'obtenir cette information est d’interroger le serveur et que la majorité ne répondent pas.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h51.


 
 
 
 
Partenaires

Hébergement Web