Bonjour,
voila, je me suis mis au C il y a po tres longtemps et je suis en train d'ércire un prog assez long, je le fais donc en plusieurs partie parce que, en phase d'apprentissage, c plus pratique pour tester et vois ce que l on a pas compris. J'en appelle donc à votre indulgence.
ce bout de prog est destiné à envoyer un mail en se connectant au smtp de wanadoo. :
voici tt d abord les réponses qu'obtient l'executable : (remarquez le ehlo a une réponse 220 au lieu de 250 mais je ne vois pas pourquoi) :
-----------------------------------------------------------
EHLO TEST
220 mwinf0301.wanadoo.fr ESMTP ABO **************************
MAIL FROM:<titi@wanadoo.fr>
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
RCPT TO:<toto@wanadoo.fr>
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
DATA
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
texte de test
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
.
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
QUIT
250-mwinf0301.wanadoo.fr
250-PIPELINING
250-SIZE 10485760
250 8BITMIME
Press a key to finish.
-----------------------------------------------------------
voici le source :
-----------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <winsock2.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib" )
main(){
//ouverture de socket
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("193.252.22.74" );//smtp de wanadoo
sin.sin_family = AF_INET;
sin.sin_port = htons(25);//port du smtp
sock = socket(AF_INET,SOCK_STREAM,0);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));
//données a envoyer
char buff[100];
char bjr[50] = "EHLO TEST\n";
char mailfrom[50] = "MAIL FROM:<titi@wanadoo.fr>\r\n";
char rcptto[50] = "RCPT TO:<toto@wanadoo.fr>\r\n";
char data[50] = "DATA\r\n";
char texte[50] = "texte de test\r\n";
char fin[50] = ".\r\n";
char fermer[50] = "QUIT\r\n";
//envoi du mail
printf("%s", bjr);
send(sock, bjr, sizeof(bjr), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", mailfrom);
send(sock, mailfrom, sizeof(mailfrom), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", rcptto);
send(sock, rcptto, sizeof(rcptto), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", data);
send(sock, data, sizeof(data), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", texte);
send(sock, texte, sizeof(texte), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", fin);
send(sock, fin, sizeof(fin), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
printf("%s", fermer);
send(sock, fermer, sizeof(fermer), 0);
recv(sock, buff, sizeof(buff), 0);
printf("%s\n", buff);
//fermeture du socket
closesocket(sock);
WSACleanup();
puts("\nPress a key to finish." ); getch();
}
-----------------------------------------------------------
Un grand merci à ceux qui auront eu la patience de lire mon post.
je suis sous win2k pro et je compile avec le borland gratuit en ligne de commande. la compilation de pose aucun probleme, pas de warning ni de error.
Message édité par TheTooN le 29-06-2003 à 18:26:52