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 : Sélectionner tout - Visualiser dans une fenêtre à part
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