czyli Spoon ja mam taki kod :
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
WSADATA wsaData;
WORD wersja;
int blad;
int rozmiar;
char bufor[4096];
char tekst[4096];
SOCKET soc_klient;
int main(int argc,char** argv)
{
//********************************************************
//**zamień te zmienne
char serwer[]="poczta.onet.pl";
char nadawca[]="ja@op.pl";
char odbiorca[]="ktos_tam@cos_tam.pl";
char odkogo[]="ruf3k";
char temat[]="próba";
char wiadomosc[]="czesc\n To jest próbny email\r\n";
//********************************************************
wersja = MAKEWORD( 2, 0 );
blad = wersja, &wsaData ;
if ( blad != 0 )
{
printf("blad!");
return 0;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 0 )
{
printf("blad, zla wersja winsock");
return 0;
}
struct hostent *host;
struct sockaddr_in sin;
memset( &sin, 0, sizeof(sin));
host=gethostbyname(serwer);
if(host==NULL)
{
printf("gethostbyname błąd-nie moge znalezc takiego serwera");
return 0;
}
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = ((struct in_addr *)(host->h_addr))->s_addr;
sin.sin_port = htons(25); //port smtp-25
soc_klient = socket( AF_INET, SOCK_STREAM, 0 );
if ( connect(soc_klient,(struct sockaddr *) &sin, sizeof(sin)) == SOCKET_ERROR )
{
printf("polaczenie nie powiodlo sie");
return 0;
}
printf("czekam na odpowiedz z serwera\n");
blad=recv(soc_klient,bufor,sizeof(bufor),0);
char nazwa[256];
gethostname(nazwa,255);
wsprintf(tekst,"HELO %s\r\n",nazwa);
blad=send(soc_klient,tekst,strlen(tekst),0);
blad=recv(soc_klient,bufor,sizeof(bufor),0);printf("*");
wsprintf(tekst,"MAIL FROM: <%s>\r\n",nadawca);
blad=send(soc_klient,tekst,strlen(tekst),0);
blad=recv(soc_klient,bufor,sizeof(bufor),0);printf("*");
wsprintf(tekst,"RCPT TO: <%s>\r\n",odbiorca);
blad=send(soc_klient,tekst,strlen(tekst),0);
blad=recv(soc_klient,bufor,sizeof(bufor),0);printf("*");
sprintf(tekst, "DATA\r\n");
blad=send(soc_klient,tekst,strlen(tekst),0);
blad=recv(soc_klient,bufor,sizeof(bufor),0);printf("*");
//naglowki
wsprintf(tekst, "From: %s <%s>\r\n",odkogo,nadawca);
blad=send(soc_klient,tekst,strlen(tekst),0);
wsprintf(tekst, "To: <%s>\r\n",odbiorca);
blad=send(soc_klient,tekst,strlen(tekst),0);
wsprintf(tekst,"Subject: %s\r\n",temat);
blad=send(soc_klient,tekst,strlen(tekst),0);
//wiadomosc
strcat(wiadomosc,".\r\n");
wsprintf(tekst,"%s",wiadomosc);
blad=send(soc_klient,tekst,strlen(tekst),0);
//koniec
sprintf(tekst, "\r\n.\r\n");
blad=send(soc_klient,tekst,strlen(tekst),0);
blad=recv(soc_klient,bufor,sizeof(bufor),0);printf("*");
closesocket( soc_klient);
printf("\n OK!");
return 0;
}
i teraz jakbys mogl to sprawdz co jest zle i zmien mi tak (jesli chcesz) abyy dzialalo pod linuxem pliss :(