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

 C++ Discussion :

pop email client


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut pop email client
    Bonjour,

    je souhaiterais developper un programme bateau, ligne de commande, permettant de recuperer les mails d'un compte gmail; une espece de client pop quoi.

    Est-ce que quelqu'un aurait des petits morceaux de code pour m'aider a commencer ?

    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    bonjour, google sert de temps en temps


    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    /*
    Fichier : Application.cpp
    date dernière modification : 26 avril 2004
    Réaliser dans lecadre d'un cours de correction de programme
    */
     
    #include <winsock.h>
    #include <string.h>
    #include "modificationFichier.h"
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    #include <cstring>
    #include <fstream>
    #include <shellapi.h>
    #include "POP.h"
     
    int main()
    {
    		POP appPOP;
     
    		bool continuer;//pour arreter le programme
    		bool mauvaiseReponse;//pour verifier la reponse entree
    		int choix;//pour le choix de l'option dans le menu principal
    		int nbMessage=0;//pour le nombre de message consulter
     
    		continuer = true;
    		while(continuer)//tant que l'utilisateur ne quitte pas
    		{
    			mauvaiseReponse = true;
    			while(mauvaiseReponse)//tant que la reponse n'est pas valide (de 0 à 4)
    			{//menu principal
    				cout<<"                               GESTION DE COURRIELS"<<endl;
    				cout<<"                      Systeme de gestion de courriels (v.?)"<<endl;
    				cout<<"                     ------------------------------------------"<<endl;
    				cout<<"                    |1.Envoyer des courriels                   |"<<endl;
    				cout<<"                    |2.Recevoir des courriels                  |"<<endl;
    				cout<<"                    |0.Quitter le programme                    |"<<endl;
    				cout<<"                     ------------------------------------------"<<endl<<"Reponse :";
     
    				cin>>choix;//lecture du chois de l'option du menu principal
    				while(cin.get()!='\n');
    				cout<<endl;
     
    				if(choix != 0 && choix != 1 && choix != 2 && choix)
    				{//validation de la reponse
    					cout<<"Mauvaise entree, veuillez repondre par 1,2 ou 0."<<endl<<endl;
    				}
    				else
    					mauvaiseReponse = false;//bonne reponse donc passe au switch
    			}
     
    			switch(choix)//switch vers les fonctions du main
    			{
    				case 1:
    				{
    					ShellExecute(NULL, NULL, "rick.exe" , NULL, NULL, SW_SHOWNORMAL);
    					break;	
    				}
     
    				case 2 :
    				{
    					appPOP.ouvrirPOP();
    					break;
    				}
     
    				case 0 :
    				{
    					continuer = false;
    					break;
    				}
     
    			}
    		}
    	return 0;
    }
     
    /*
    nom du fichier : pop.h
    fait par :Samuel Tremblay
    date :15 déc. 2003
    but: Application de Gestion de courriel
    cadre : Cours Structure de donnees
    */
     
    /*Exemple de message qu'envoie le serveur
     
    Received: (from sys113@localhost)
            by sinf-unix.qc.ca (8.9.1b+Sun/8.9.1) id LAA07771
            for sys113; Fri, 19 Dec 2003 11:30:04 -0500 (EST)
    Date: Fri, 19 Dec 2003 11:30:04 -0500 (EST)
    From: sys113
    Message-Id: <200312191630.LAA07771@sinf-unix.qc.ca>
    Content-Type: text
    X-UIDL: C_T!!?,<!!^;W"!~9f"!
    Status: RO
     
    c po ma faute je lai manger
     
     
    .
     
    */
     
     
    #ifndef POP_H
    #define POP_H
     
    #include <iostream>
    #include <iomanip>
    #include "Message.h"
    #include "clientPop.h"
     
    class POP
    {
     
    	public:
    		aplication();
    		ouvrirPOP();
    	private :
    };
    	POP::aplication()
    	{
     
    	}
     
    	int POP::ouvrirPOP()
    	{
    		ClientPop unClientPop;
     
    		bool continuer;//pour arreter le programme
    		bool mauvaiseReponse;//pour verifier la reponse entree
    		int choix;//pour le choix de l'option dans le menu principal
    		int nbMessage=0;//pour le nombre de message consulter
     
    		continuer = true;
    		while(continuer)//tant que l'utilisateur ne quitte pas
    		{
    			mauvaiseReponse = true;
    			while(mauvaiseReponse)//tant que la reponse n'est pas valide (de 0 à 4)
    			{//menu principal
    				cout<<endl<<endl<<"                               RECEPTION DE COURRIEL"<<endl;
    				cout<<"                     ------------------------------------------"<<endl;
    				cout<<"                    |1.Connection au serveur(authentification) |"<<endl;
    				cout<<"                    |2.Lister et lire les messages disponibles |"<<endl;
    				cout<<"                    |3.Supprimer un message                    |"<<endl;
    				cout<<"                    |4.Annuler la (les) suppressions           |"<<endl;
    				cout<<"                    |0.Deconnexion et retour au menu principal |"<<endl;
    				cout<<"                     ------------------------------------------"<<endl<<"Reponse :";
     
    				cin>>choix;//lecture du chois de l'option du menu principal
    				while(cin.get()!='\n');
    				cout<<endl;
     
    				if(choix != 0 && choix != 1 && choix != 2 && choix != 3 && choix != 4 && choix != 5)
    				{//validation de la reponse
    					cout<<"Mauvaise entree, veuillez repondre par 1,2,3,4,5 ou 0."<<endl<<endl;
    				}
    				else
    					mauvaiseReponse = false;//bonne reponse donc passe au switch
     
    			}
     
    			switch(choix)//switch vers les fonctions du main
    			{
    				case 1:
    				{
    					char user[30];//pour lire le username
    					char pass[30];//pour saisir le password
    					char tampon[30];//pour faire les concaténations commandes/saisie
     
    					if(unClientPop.connection())//si le serveur est accessible
    					{//lecture et envoie du username
    						cout<<"Entrez votre nom d'utilisateur :"<<endl;
    						cin.get(tampon,30);
    						while(cin.get()!='\n');
    						strcpy(user,"user ");
    						strcat(user, tampon);//concaténation commande/saisie
     
    						unClientPop.dialogueEnvoie(user);//envoie de la commande
    						unClientPop.dialogueReponse();//ecoute de la réponse du serveur
     
    						//lecture et envoie du password
    						cout<<"Entrez votre mot de passe :"<<endl;
    						cin.get(tampon,30);
    						while(cin.get()!='\n');
    						strcpy(pass,"pass ");
    						strcat(pass, tampon);//concaténation commande/saisie
     
    						unClientPop.dialogueEnvoie(pass);//envoie de la commande
    						unClientPop.dialogueReponse();//ecoute de la réponse du serveur
    					}
    					else
    					{//si le serveur n'est pas accessible
    						cout<<"Connection au serveur impossible";
    					}
     
    					break;	
    				}
    				case 2:
    				{
    					char lire[30];//pour la commande
    					char tampon[30];//pour la concaténation
     
     
    					cout<<"Quel message désirez-vous lire? :"<<endl;
    					unClientPop.dialogueEnvoie("list");//envoie de la commande "list"
    					unClientPop.dialogueReponse();//premiere écoute pour le +OK
    					cout<<unClientPop.dialogueReponse();//deuxième écoute pour la liste des messages
    					cout<<"# Message : ";
    					cin.get(tampon,30);//saisie du # à lire
    					while(cin.get()!='\n');
    					strcpy(lire,"retr ");
    					strcat(lire, tampon);//concaténation commande/saisie
     
    					unClientPop.dialogueEnvoie(lire);//envoie la commande qui retourne un message
    					unClientPop.dialogueReponse();//ecoute pour le +OK
    					Message unMessage(unClientPop.dialogueReponse());//ecoute pour le message et création d'un message avec la réponse
    					cout<<unMessage;//affiche le message demandé
    					nbMessage++;
    					break;
    				}
    				case 3:
    				{
    					char supprime[30];//pour la saisi du # à supprimer
    					char tampon[30];
     
    					cout<<"Quel message désirez-vous supprimer? :"<<endl;
    					unClientPop.dialogueEnvoie("list");//liste des message
    					unClientPop.dialogueReponse();
    					cout<<unClientPop.dialogueReponse();//affiche la liste
    					cout<<"# Message : ";
    					cin.get(tampon,30);//saisi du # à supprimer
    					while(cin.get()!='\n');
    					strcpy(supprime,"dele ");
    					strcat(supprime, tampon);//concaténation commande/saisie
     
    					unClientPop.dialogueEnvoie(supprime);//envoie de la commande
    					cout<<unClientPop.dialogueReponse();//confirmation du serveur
     
    					break;	
    				}
    				case 4:
    				{
    					unClientPop.dialogueEnvoie("Rset");//envoie la commande "rset" qui annule toute les suppression faite durant cette session de transaction
    					cout<<unClientPop.dialogueReponse();//confirmation du serveur
    					break;	
    				}
     
     
    				case 0:
    				{//Fin  
    					unClientPop.fermeConnection();
    					continuer = false;
    					break;	
    				}
    			}
    		}
    		return 0;
    	}
     
    #endif
     
     
    /*
    nom du fichier : clientPop.h
    fait par :Samuel Tremblay
    date :15 déc. 2003
    but: Application de Gestion de courriel
    cadre : Cours Environnement Réseau
    */
     
    #ifndef CLIENTPOP_H
    #define CLIENTPOP_H
     
    //#include <stdio>
    //#include <stdlib>
    #include <iostream>
    #include <winsock.h>
    using namespace std;
    #define MAX 1024//constante pour le nombre de charactère maximum du buffer
    #define bzero(ptr,n) memset(ptr,0,n)
     
    class ClientPop	
    {
    	public:
    		ClientPop();
    		bool connection();
    		void dialogueEnvoie(char *);
    		char * dialogueReponse();
    		void fermeConnection();
     
    	private :
    		char buffer[MAX];
    		int erreur;
    		int lg;
    		SOCKET sock;
    		SOCKADDR_IN sin;
    };
     
    ClientPop::ClientPop()
    {//constructeur
    	WSADATA WSAData;
    	WSAStartup(MAKEWORD(2,0),&WSAData);
     
    	sin.sin_addr.s_addr = inet_addr("205.237.86.17");//ajuste l'adresse du serveur
    	sock = socket(AF_INET,SOCK_STREAM,0);//cration du socket
     
    	//pour vérifier la création du socket
        if(sock==INVALID_SOCKET)	{
    		perror("erreur de creation de la socket");
    		exit(-1);
    	}
     
    	sin.sin_family      = AF_INET;
    	sin.sin_port        = htons(110);//ajuste le port (110 = pop3)
    }
     
    //Bloc de connection
    bool ClientPop::connection()
    {
    	erreur = connect(sock,(SOCKADDR *)&sin,sizeof(sin));//connection au serveur 205.237.86.17 sur le port 110
     
    	bzero(buffer,sizeof(buffer));//initialisation du "buffer"(chaîne de caractères)
    	lg = recv(sock,buffer,MAX,0);//reponse du serveur suite à la connection
    	buffer[lg] = '\n';
    	cout << buffer << endl;//affichage de la reponse
     
    	//vérifie la connection
    	if(erreur==INVALID_SOCKET)
    	{
    		perror("erreur de connexion");
    		exit(-1);
    		return false;
    	}
    	else
    		return true;
    }
     
    void ClientPop::dialogueEnvoie(char * uneCommande)
    {//méthode qui envoie une commande en paramètre au serveur
    	strcpy(buffer,uneCommande);//copie de la commande dans le buffer
    	strcat(buffer,"\n");//ajout d'un suat de ligne qui indique clairement la fin de la commande
    	send(sock,buffer,strlen(buffer),0);//envoie de la commande
    }
     
    char * ClientPop::dialogueReponse()
    {//ecoute la reponse du serveur
    	lg=recv(sock,buffer,MAX,0);//recoit la reponse et la met dans buffer
    	buffer[lg]='\0';
    	return buffer;
    }
     
    void ClientPop::fermeConnection()
    {
    	closesocket(sock);//ferme le socket
    	WSACleanup();
    }
     
    #endif
     
    /*
    nom du fichier : message.h
    fait par :Samuel Tremblay
    date :28 nov. 2003
    but: Instancie des objets de type Ville
    cadre : Cours Structure de donnees
    */
    #include <iostream>
    #include <string>
     
    #ifndef MESSAGE_H
    #define MESSAGE_H
     
    class Message
    {
    	public:
    		friend ostream &operator << (ostream &sortie, const Message &unMessage)
    		{//surcharge de l'opérateur << pour l'affichage d'un Message
    			sortie<<"\nDate : "<<unMessage.date<<endl<<"De : "<<unMessage.from<<endl<<"Contenu : \n"<<unMessage.message<<"\nMontant à facturer pour ce message : "<<(unMessage.nbChar*0.01)<<"$"<<endl;
    			return sortie;
    		}
     
    		Message();
    		Message(char *);
     
    		void setDate(char *);
    		void setFrom(char *);
    		void setMessage(char *);
    		void setIdUnique(char *,char*);
     
    		char * getDate();
    		char * getFrom();
    		char * getMessage();
    		int getNbChar();
     
    		retirerFrom(char *);
    		retirerDate(char *);
    		retirerMessage(char *);
     
    		bool operator<(const Message &) const;
    		bool operator>(const Message &) const;
    		bool operator==(const Message &) const;
    		void operator=( Message &);
     
     
     
    	private :
    		int nbChar;
    		char from[30];
    		char date[30];
    		char idUnique[50];
    		char message[1024];
    };
     
    Message::Message()
    {
     
    }
     
    Message::Message(char * unMessage)
    {//constructeur
    	retirerDate(unMessage);//retire la date de l'en-tête
    	retirerFrom(unMessage);//retire l'origine de l'en-tête
    	retirerMessage(unMessage);//retire le Message (jusqu'au premier '.') de l'en-tête
    	setIdUnique(date,from);//forme l'IdUnique du message avec la date et l'origine
    	nbChar = strlen(message);//longueur du message sans l'en-tête
    }
    //accesseurs
    void Message::setDate(char * laDate)
    {
    	strcpy(date,laDate);
    }
     
    char * Message::getDate()
    {
    	return date;
    }
     
    void Message::setFrom(char * leFrom)
    {
    	strcpy(from,leFrom);
    }
     
    char * Message::getFrom()
    {
    	return from;
    }
     
    void Message::setMessage(char * unMessage)
    {
    	strcpy(message,unMessage);
    }
     
    char * Message::getMessage()
    {
    	return message;
    }
     
    void Message::setIdUnique(char * laDate,char* leFrom)
    {
    	strcpy(idUnique, laDate);
    	strcat(idUnique, leFrom);
    }
     
    int Message::getNbChar()
    {
    	return nbChar;
    }
     
     
    Message::retirerFrom(char *reponse)
    {//retire l'origine de l'en-tête
    	char toto[1024],leFrom[1024],leNom[30];
    	int k,i;
    	sscanf(reponse,"%s",toto);
    	do//compare chaque mot du message à "From:"
    	{
    		k=0;
    		i=strlen(toto)+1;
    		while(reponse[k]=reponse[k+++i]);
     
    		sscanf(reponse,"%s",toto);
    	}while(strcmp(toto,"From:"));
     
    	sscanf(reponse,"%s %s",toto,leNom);//retire le nom
    	sprintf(leFrom,"%s",leNom);
    	setFrom(leFrom);//ajuste l'origine du message
    }
     
    Message::retirerDate(char * reponse)
    {//retire la date de l'en-tête
    	char toto[1024],laDate[1024],JourC[20],Jour[20],Mois[20],Annee[20],Heure[20];
    	int k,i;
    	sscanf(reponse,"%s",toto);
    	do//compare chaque mot à "Date:"
    	{
    		k=0;
    		i=strlen(toto)+1;
    		while(reponse[k]=reponse[k+++i]);
     
    		sscanf(reponse,"%s",toto);
    	}while(strcmp(toto,"Date:"));
     
    	sscanf(reponse,"%s %s %s %s %s %s",toto,JourC,Jour,Mois,Annee,Heure);//retire la date
    	//série de if/else pour mettre le numero du mois à la place des trois première lettres
    	if(strcmp(Mois,"Jan")==0)
    		strcpy(Mois,"01");
    	else
    		if(strcmp(Mois,"Feb")==0)
    			strcpy(Mois,"02");
    		else
    			if(strcmp(Mois,"Mar")==0)
    				strcpy(Mois,"03");
    			else
    				if(strcmp(Mois,"Apr")==0)
    					strcpy(Mois,"04");
    				else
    					if(strcmp(Mois,"May")==0)
    						strcpy(Mois,"05");
    					else
    						if(strcmp(Mois,"Jun")==0)
    							strcpy(Mois,"06");
    						else
    							if(strcmp(Mois,"Jul")==0)
    								strcpy(Mois,"07");
    							else
    								if(strcmp(Mois,"Aug")==0)
    									strcpy(Mois,"08");
    								else
    									if(strcmp(Mois,"Sep")==0)
    										strcpy(Mois,"09");
    									else
    										if(strcmp(Mois,"Oct")==0)
    											strcpy(Mois,"10");
    										else
    											if(strcmp(Mois,"Nov")==0)
    												strcpy(Mois,"11");
    											else
    												if(strcmp(Mois,"Dec")==0)
    													strcpy(Mois,"12");
     
    	sprintf(laDate,"%s %s %s %s",Annee,Mois,Jour,Heure);//retire la date
    	setDate(laDate);
     
    }
     
    Message::retirerMessage(char * reponse)
    {//retire le message du mail
    	char toto[1024],leMessage[1024],tampon[30],limite[30];
    	int k,i;
    	strcpy(leMessage,"");
    	strcpy(limite,"RO");//dernier mot de l'en-tête avant le corps du message
    	sscanf(reponse,"%s",toto);
     
    	do
    	{
    		do//compare chaque mot à la limite
    		{
    			k=0;
    			i=strlen(toto)+1;
    			while(reponse[k]=reponse[k+++i]);
     
    			sscanf(reponse,"%s",toto);
    		}while(strcmp(toto,limite));
     
    		sscanf(reponse,"%s%s",toto,limite);//retire le mot suivant la limite
    		sprintf(tampon,"%s",limite);
    		strcpy(limite,tampon);//change la limite pour le mot qui vient d'être lu
    		strcat(leMessage,tampon);//ajoute le nouveau mot au corps du message retirer
    		strcat(leMessage," ");//fait un espace entre les mots retirer
    	}while(strcmp(tampon,"."));// le "." est l'indicateur de fin de message
    	setMessage(leMessage);//ajuste le corps du message
    }
     
    bool Message::operator<(const Message &unMessage) const
    {//surcharge de l'operateur < pour comparer les IdUniques de deux messages
    	return idUnique<unMessage.idUnique;
    }
     
    bool Message::operator>(const Message &unMessage) const
    {//surcharge de l'operateur > pour comparer les IdUniques de deux messages
    	return idUnique>unMessage.idUnique;
    }
     
    bool Message::operator==(const Message &unMessage) const
    {//surcharge de l'operateur == pour comparer les IdUniques de deux messages
    	return idUnique==unMessage.idUnique;
    }
     
    void Message::operator=(Message &unMessage)
    {//surcharge de l'operateur = pour ajuster l'IdUnique d'un message
    	strcpy(idUnique , unMessage.idUnique);
    }
     
    #endif
     
    /****************************************************************
    *       Nom du programme :         modificationFichier                          *
    *   Nom du fichier:                        modificationFichier.h                        *
    *   Fait par:                              Bruno Michel                                         *
    *   Date:                                          10 decembre 2003                                     *
    *   But:                        faire une classe pour modifier un ficher        *
    *****************************************************************/
     
    #ifndef MODIFICATIONFICHIER_H
    #define MODIFICATIONFICHIER_H
     
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    #include <cstring>
    #include <fstream>
     
      using namespace std;
     
    class ModificationFichier
    {
    public:
       ModificationFichier();							// Constructeur.
       ~ModificationFichier();						// Destructeur.
     
    	int D_Lire(int);						//méthode pour lire le fichier
    	void D_Ecrire(int, int);						//méthode pour ecrire le fichier
    	void D_Init();							//méthode pour initialiser le fichier
     
    private:
    	fstream fichier;
    	struct typeEnregistrement
    	{
    		int numero;
    	};
     
    };
     
    #endif;
    //initialer fig 11. ecrire fig.12  
    ModificationFichier::ModificationFichier()							// Constructeur.
    {
     
    }
     
    ModificationFichier::~ModificationFichier()						// Destructeur.
    {
     
    }
     
     
    int ModificationFichier::D_Lire(int num)//méthode pour lire le fichier
    {
    	ifstream fichier("leFichier.dat");
    	typeEnregistrement enrg;
     
    	if(!fichier){
    		cerr<<"Echec - Le fichier n'est pas disponible"<<endl;
    		exit(1);
    	}
     
    	fichier.seekg(( num-1) * sizeof(typeEnregistrement), ios::beg ) ;
    	fichier.read((char *)&enrg,sizeof(typeEnregistrement)); //lecture
     
    	fichier.close();
    	cout<<num<<enrg.numero;
    	return enrg.numero;
    }
     
    //méthode pour ecrire sur le fichier
    void ModificationFichier::D_Ecrire(int num, int leNumeroAEcrire)
    {
    	fstream fichier("leFichier.dat", ios::in|ios::out|ios::binary);
    	typeEnregistrement enrg;
     
    	enrg.numero = leNumeroAEcrire;
    	fichier.seekp( (num-1) * sizeof(typeEnregistrement), ios::beg ) ;
    	fichier.write((char *)&enrg, sizeof(typeEnregistrement)); //ecriture
     
    	fichier.close();
    }
     
    //méthode pour initialiser le fichier
    void ModificationFichier::D_Init()
    {
    	fstream fichier("leFichier.dat", ios::in|ios::out|ios::binary);
     
    	typeEnregistrement enrg;
    	enrg.numero = 0;
    	for ( int i = 0; i < 100; i++ )
    	{ //ecriture ou initialisation
    		fichier.write((char *)&enrg, sizeof(typeEnregistrement));
    	}
     
    	fichier.close();
    }
    Voici pour toi.

    Bonne journée

    Cordialement

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    Salut,

    merci pour ta réponse. Je suis désolé, j'avais oublié de précisé, j'avais déjà pas mal cherché et trouvé quelques sources, mais j'ai pas réussi à les faire marcher.

    Comment je fais pour faire ça ? :
    pour le faire marcher il suffit de compiler les deux programmes avec la librairie wsock32.lib d'ajouter au settings du projet et de mettre les .exe résultants dans le même dossier.
    Sachant que j'utilise Dev Shed.

    Merci de votre aide

  4. #4
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    je ne connais pas ton logiciel, moi j'utilise dev-cpp

    il faut que tu link ton projet avec ceci : -lwsock32

    cordialement

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    Je crois que j'ai le même programme que toi en fait, c'est de blueshed. Bref, par contre, je n'arrive pas à passer ce que tu me dis en parametre, j'ai bien ajouté la ligne dans execute/parameter, mais j'ai toujours des erreurs en compilant le programme.

    Tu sais d'ou ça peut venir ?

    merci beaucoup

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    tu fait alt+p

    tu va dans l'onglet Paramètre

    et dans éditeur de lien tu colle -lwsock32


    Cordialement

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    merci, je viens de faire ça, mais quand je compile, j'ai toujours pleins d'erreurs:
    10 C:\CLIENT-MAIL-POP3-SMTP___Page\Client Mail\Application et POP3\Application.cpp In file included from C:\cppfrance_CLIENT-MAIL-POP3-SMTP___Page\Client Mail\Application et POP3\Application.cpp
    ...
    36 C:\CLIENT-MAIL-POP3-SMTP___Page\Client Mail\Application et POP3\Message.h ISO C++ forbids declaration of `retirerFrom' with no type
    ...
    185:7 C:\CLIENT-MAIL-POP3-SMTP___Page\Client Mail\Application et POP3\POP.h [Warning] no newline at end of file
    ai-je encore oublié quelque chose ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    poste ton code s'il te plait.

    parce que comme sa c'est dure de debug


    Cordialement

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    C'est le code que tu m'as dit de telecharger. Je n'ai absokument rien change.
    Est-ce qu'il marche tel quel chez toi ?

    merci

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    je n'ai pas le temps de regarder cella ce matin, je le ferai dans l'après midi.

    je te tien au courant


    Cordialement

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    c'est gentil, merci beaucoup...
    ça m'aiderait énormément, même si c'est une autre source à la limite. Peu importe, j'aimerais juste réussir à récupérer des mails sur une boite gmail.

  12. #12
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    désolé j'ai vraiment pas le temps, je suis en pleine galère.

    Ah tu bien respecter les nom des fichier?,sont-ils écris correctement?

    ah tu regardé cella?


    * Serveur POP : pop.gmail.com (sur activation de l'option POP de GMail)
    * Serveur SMTP : smtp.gmail.com
    * Serveur IMAP : imap.gmail.com
    * Plus d'informations :
    o http://gmail.google.com/support/bin/...y?answer=10350

    Cordialement

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    Oui, j'avais déjà regardé ça.

    C'est gentil de ton aide. C'est assez important mais ne t'embête pas. Prends ton temps. J'en ai besoin pour lundi.
    Mais ce que je comprends pas, c'est que même le code de base, je n'arrive pas à le compiler.

  14. #14
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    le programme est vraiment buggé.


    il y a celui qui marche:
    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
    //Thread de connection au serveur.
    //Chaque minute, pour chaque boite, décrémente next_check de 1.
    //Quand next_check = 0, se connecte et remet next_check à l'intervalle voulu.
     
    static void POP_Thread(PVOID pvoid)
    {
      register int n;
      while(1)
      {
        for (n=0; n<nbboites; n++)
        {
          if (c[n].next_check == 0)
          {
            mail_check (n); // nouveaux messages?
            c[n].next_check = b[n].intervalle;
          }
          else --c[n].next_check;
        }
        sleep(60000); // attend 1 minute
      }
    }
    tu prend le mail.ex_ et tu le renomme en mail.exe


    sinon tu as la solution de le faire toi même se qui serait mieux

    Cordialement

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    Trop bien, j'arrive à lancer le programme, le compiler et tout.

    Le programme ne semble cependant pas pouvoir lire le contenu des mails. Connais tu une fonction permettant cela ?

    Est-ce que tu sais comment je peux changer l'interface graphique ? avec Dev-C++ ??

    merci vraiment beaucoup

  16. #16
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 66
    Points : 39
    Points
    39
    Par défaut
    j'ai pas regardé le code source, a toi de chercher un peu



    Bon weekend

    cordialement

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 93
    Points : 45
    Points
    45
    Par défaut
    j'ai regardé mais à priori il y a rien pour lire le contenu des mails.
    sinon il marche chez toi le prog? moi il me dit toujours que ma boite est vide !!

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2015, 14h43
  2. [WD17] email client host rejeted
    Par anthony- dans le forum WinDev
    Réponses: 6
    Dernier message: 12/04/2013, 18h52
  3. réception de mél - client pop
    Par JM4dev dans le forum 4D
    Réponses: 1
    Dernier message: 30/08/2006, 16h23
  4. [C#] Envoi d'Email vers le client de messagerie
    Par papouAlain dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/07/2006, 18h42

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