Bonjour

Je crée un programme qui permet d'envoyer par email le contenue d'un fichier .txt , il devrait normalement marche car il n'y a pas d'erreur a la compillation mais j'ai une erreur...

"Exception non gérée à 0x6893f693 (msvcr90d.dll) dans test email.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000000."

Je ne comprend pas trop de quoi cela peut venir, j'ai beaucoup chercher mais rien trouver.

J'espére étre dans la bonne parti du forum.

je vous marque mon code :

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
#define TAILLE_MAX 1000 // Tableau de taille 1000
 
#include <winsock.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <cstdio>
#include <sstream>
#include <fstream>
 
 
#pragma comment(lib,"ws2_32.lib")
SOCKET to_server_socket = 0;
char *    server_name;
int     port                         = 25;
 
char destinataire[120] = "RCPT To: <";
char sender[120] = "MAIL From: <";
char * exp;
char * dest;
char * sujet;
char * message;
char buffer[15];
char body[1100] = "Subject: ";
 
 
 
void bcopy( void * source, void * destination, int size )
{
     char * src = ( char * ) source;
     char * dst = ( char * ) destination;
 
     for( int i=0; i<size; i++ )
            dst[i] = src[i];
}
 
void bzero( void * destination, int size )
{
     char * dst = ( char * ) destination;
 
     for( int i=0; i<size; i++ )
            dst[i] = 0x00;
}
 
void Process( char * buffer )
{
     Sleep( 1000 );
 
     int        size     = strlen( buffer );
     int        retVal = send( to_server_socket, buffer, size, 0 );
 
     char buf[ 1024 ];
     buf[0] = 0x00;
     while( !buf[0] )
            int yeah = recv( to_server_socket, buf, 1024, 0 );
 
}
 
int main( int argc, char *argv[], char * )
{
	std::string contenue;
	FILE* fichier = NULL;
    char chaine[TAILLE_MAX] = ""; // Chaîne vide de taille TAILLE_MAX
 
	fichier = fopen("C:\\readme.txt", "r");
 
    if (fichier != NULL)
    {
        fgets(chaine, TAILLE_MAX, fichier); // On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine"
		contenue += chaine;
        printf("%s", chaine); // On affiche la chaîne
 
        fclose(fichier);
    }
 
	const char *CstStr2 = contenue.c_str ();  
 
 
     if (strcmp(CstStr2,buffer) == 0) {
		 exit( -1 );
	 }
     int                     not                        = 0;
     unsigned long ioctl_blocking = 1;
 
     /*cout<<"Entrez le nom du serveur smtp ou son ip\n";
     cin>>server_name;
     cout<<"Entrez l'adresse email de l'expediteur\n";
     cin>>exp;
     cout<<"\nEntrez l'adresse email du destinataire\n";
     cin>>dest;
     cout<<"\nEntrez le sujet du mail\n";
     cin>>sujet;
     cout<<"\nEntrez votre message\n";
     cin>>message;*/
 
	 server_name = "smtp.orange.fr";
	 exp = "cannabis31@orange.fr";
	 dest = "cannabis31@orange.fr";
	 sujet = "le sujet";
 
     strcat(sender,exp);
     strcat(sender,">\r\n");
     strcat(destinataire,dest);
     strcat(destinataire,">\r\n");
     strcat(body,sujet);
     strcat(body," \r\n\r\n ");
     strcat(body,message);
     strcat(body," \r\n.\r\n");
 
     WSADATA wsaData;
     if( int err = WSAStartup( 0x0101, &wsaData ) )
     {
 
            exit( -1 );
     }
 
 
     struct sockaddr_in  serverSockAddr;        // addresse de la socket
     struct hostent      * serverHostEnt;        // description du host serveur
     long                                hostAddr;                  // addr du serveur
 
     bzero( &serverSockAddr, sizeof( serverSockAddr ) );         // initialise a zero serverSockAddr
     // converti l'adresse ip 9.100.1.1 en entier long
     hostAddr = inet_addr( server_name );
 
     if( ( long ) hostAddr != ( long ) -1 )                                  
            bcopy( &hostAddr, &serverSockAddr.sin_addr, sizeof( hostAddr ) );
     else                                                                                                       // si on a donne un nom
     {
            serverHostEnt = gethostbyname( server_name );
            if ( serverHostEnt == NULL )
            {
 
                 exit( 0 );
            }
            bcopy( serverHostEnt->h_addr, &serverSockAddr.sin_addr, serverHostEnt->h_length );
     }
 
     serverSockAddr.sin_port = htons( port );                // host to network port
     serverSockAddr.sin_family = AF_INET;                        // AF_*** : INET=internet
     // creation de la socket
 
     to_server_socket = socket( AF_INET, SOCK_STREAM, 0 );
     if ( to_server_socket < 0)
     {
 
            exit( 0 );
     }
 
     setsockopt(to_server_socket, SOL_SOCKET, SO_DONTLINGER, (char *) &not, sizeof(not));
 
 
     // requete de connexion
     if( connect( to_server_socket, ( struct sockaddr * ) &serverSockAddr, 
                                                                            sizeof( serverSockAddr ) ) < 0 )
     {
 
            exit( 0 );
     }
 
     ioctlsocket ( to_server_socket, FIONBIO, &ioctl_blocking );
 
     char buf[ 1024 ];
     buf[0] = 0x00;
     while( !buf[0] )
            int yeah = recv( to_server_socket, buf, 1024, 0 );
 
 
     Process( "EHLO Toto\r\n" );
     Process( sender );  // mail de l'expediteur
     Process( destinataire );    // mail du destinataire
     Process( "DATA\r\n" );
     Process( body );
     Process( "QUIT\r\n" );
 
     /* fermeture de la connection */
     shutdown( to_server_socket, 2 );
 
     return( closesocket( to_server_socket ) );
}