IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Problème client mail C


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut Problème client mail C
    Bonjour à tous,

    J'essaye actuellement de réaliser un programme en C me permettant de stocker le contenu de mes mails dans un fichier texte.
    Lorsque la commande STAT est envoyé, il m'indique CORRECTEMENT le nombre d'e-mail.
    Cependant la console affiche "There are 0 message(s) waiting" même si j'ai des mails.
    Je pense que le problème vient de cette partie du code mais je ne parviens pas à corriger

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
      strcpy(Rec_Buf,"STAT\r\n");                  /* send stat command */
      err=send(sock,Rec_Buf,strlen(Rec_Buf),0);
      sprintf(File_Buf,"sent: %s", Rec_Buf);
      write_file(LOG_FILE | SCREEN, File_Buf);
     
      /*
       * should receive +OK x y where x = number of messages
       * and y is total octets. Note the buffers we have allocated
       * would not be sufficient for a real pop client. They
       * should be dynamically allocated here after checking the
       * size of the waiting emails.
       */
     
      err=recv(sock,Rec_Buf,BUF_LEN,0);
      sprintf(File_Buf,"received: %s", Rec_Buf);
      write_file(LOG_FILE | SCREEN, File_Buf);
     
      if ( strstr(Rec_Buf,POP_ERR_MSG) != NULL )    /* check for errors */
        pop_error();
     
     
      /*
       * Now we need to work out how many emails we have to retrieve
       * and set up a loop to get them all.
       */
     
     i=j=0;
     
     while (i )  {
        if (Rec_Buf[i] > '0' && Rec_Buf[i]  )   {
          while (Rec_Buf[i] != ' ')                   /* space is end of number */
          {
            tempbuf[j] = Rec_Buf[i];
            j++;
            i++;
          }
     
          num_flag=1;
          tempbuf[j] = '\0';
        }
     
        i++;
      }
     
      i = atoi(tempbuf);                            /* number of emails */
     
     
     /* Le problème doit venir du code ci dessus */
     
      printf("There are %d message(s) waiting\r\n", i);
     
      for( j=1; j<=i; j++)
      {   
     
     
     
        sprintf(Rec_Buf, "RETR %d\r\n", j);         /* add number */
        printf("Retrieving message number %d\n", j);
        err=send(sock,Rec_Buf,strlen(Rec_Buf),0);
        sprintf(File_Buf,"sent: %s ",Rec_Buf);
        write_file(LOG_FILE| SCREEN, File_Buf);
     
        err=recv(sock,Rec_Buf,BUF_LEN,0);           /* +OK message will follow */
        sprintf(File_Buf,"received: %s ",Rec_Buf);
        write_file(LOG_FILE| SCREEN, File_Buf);
     
        if ( strstr(Rec_Buf,POP_ERR_MSG) != NULL )  /* check for errors */
          pop_error();
     
        err=recv(sock,Rec_Buf,BUF_LEN,0);           /* retrieve the mail */
        sprintf(File_Buf,"%s",Rec_Buf);
        write_file(MAIL_FILE, File_Buf);
      }
     
      printf ("All done\n\n");
    J'aimerais savoir comment résoudre cette erreur.
    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par Ice974

    [CODE]
    i=j=0;

    while (i {
    if (Rec_Buf[i] > '0' && Rec_Buf[i] {
    while (Rec_Buf[i] != ' ') /* space is end of number */
    {
    tempbuf[j] = Rec_Buf[i];
    j++;
    i++;
    }

    num_flag=1;
    tempbuf[j] = '\0';
    }

    i++;
    }

    i = atoi(tempbuf); /* number of emails */


    /* Le problème doit venir du code ci dessus */
    Salut, tu fais i=0 et après tu fais

    donc tu ne rentres jamais dans le while

    et je crois qu'il doit manquer qq parenthèses au while...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut
    J'ai oublié quelques parenthèses qui sont présente normalement dans mon code.
    J'édite le code posté précédemment.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK, mais ta variable i vaut toujours 0 donc tu ne rentres jamais dans le while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(i) <=> while(i != 0)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    après ta boucle while, tu fais un

    mais comme i==0 cette boucle for ne sera jamais exécutée.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Par défaut
    Effectivement la boucle n'est jamais exécuté.
    La variable i est le nombre de messages en attente. Je pense que le problème doit venir de là. Le programme ne parvient pas à récupérer le chiffre que renvoit la commande STAT qui est +OK x y (x=nb de mails y= la taille en octets).
    Ce chiffre devrait être stockés dans la variable i.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] problème avec différents clients mail
    Par torn33260 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 03/04/2008, 12h35
  2. [Client mail] Problème lors de l'ajout des comptes
    Par Leobaillard dans le forum Web & réseau
    Réponses: 9
    Dernier message: 19/11/2005, 17h12
  3. Client mail / navigateur par défaut
    Par Mimi Bulles dans le forum Web & réseau
    Réponses: 1
    Dernier message: 16/08/2005, 22h40
  4. envoi de mail sans l'ouverture du client mail
    Par pittacos dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2005, 15h33
  5. Navigateur et client mail par défaut
    Par gibet_b dans le forum Applications et environnements graphiques
    Réponses: 10
    Dernier message: 28/07/2004, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo