codice:
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //viene costruita la socket
if (s <0)
printf("la socket non funziona /r/n");
printf("\r\n");
printf("\n...Connessione al server in atto...\n");
connect(s,(struct sockaddr*)&sin,sizeof(sin));
//crea la connessione con il server smtp.unimi.it
send(s,"HELO <smtp.unimi.it>\r\n",strlen("HELO <smtp.unimi.it>\r\n"),0); /*manda HELO <smtp.unimi.it>*/
recv(s,answer,sizeof(answer),0);
/*riceve la risposta del server 220*/
printf("S: %s\n",answer);
/*stampa la risposta */
printf("\r\n");
strcpy(answer,"");
recv(s,answer,sizeof(answer),0);
/*riceve la risposta del server*/
printf("S: %s\n",answer);
/*stampa la risposta del server*/
printf("\r\n");
const char* send_str = "AUTH LOGIN\r\n";
/*stringa di caratteri AUTH LOGIN*/
send(s, send_str, strlen(send_str), 0);
/*manda la stringa al server*/
printf("C: AUTH LOGIN\r\n");
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stampa la risposta del server*/
printf("\r\n");
strcpy(answer,"");
printf("------> Scrivi il tuo indirizzo di posta elettronica per esteso\r\n");
scanf("%s",sendp);
rc = Base64Encode(sendp, encodedoutput, BUFFFERLEN);
send(s,encodedoutput,sizeof(encodedoutput),0);
send(s,"\r\n",strlen("\r\n"),0);
/*manda l'indirizzo di posta elettronica in base 64 */
printf("C: %s\r\n",sendp); /*stampa l'indirizzo in forma alfanumerica*/
printf("\r\n");
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stampa la risposta del server*/
printf("\r\n");
rc= 0;
strcpy(sendp,"");
strcpy(encodedoutput,"");
fflush(stdin);
strcpy(answer,"");
printf("------> Scrivi la tua password, guardati attorno la tua password non è nascosta\r\n");
scanf("%s",sendp);
rc = Base64Encode(sendp, encodedoutput, BUFFFERLEN);
send(s,encodedoutput,sizeof(encodedoutput),0);
send(s,"\r\n",strlen("\r\n"),0);
/*manda la password in base 64*/
/*stampa la password nascosta */
printf("\r\n");
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stanpa la risposta del server*/
printf("\r\n");
strcpy(answer,"");
strcpy(sendp,"");
send(s,"MAIL From: ",strlen("MAIL From: "),0);
printf("------> Scrivi l'indirizzo email tra < > \r\n");
scanf("%s",sendp);
send(s,sendp,sizeof(sendp),0);
send(s,"\r\n",strlen("\r\n"),0);
/*manda l'intestazione MAIL From:*/
printf("\r\n");
printf("\r\n");
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stampa la risposta del server*/
printf("\r\n");
rc= 0;
strcpy(sendp,"");
strcpy(encodedoutput,"");
fflush(stdin);
send(s,"RCPT To: ",strlen("RCPT To: "),0); /*manda l'intestazione RCPT To:*/
printf("------> Scrivi l'indirizzo email del destinatario tra < > \r\n");
scanf("%s",sendp1);
send(s,sendp1,sizeof(sendp1),0);
send(s,"\r\n",strlen("\r\n"),0);
printf("\r\n");
recv(s,answer,sizeof(answer),0);
printf("S: %s\n",answer);
send(s,"DATA\r\n",strlen("DATA\r\n"),0); /*manda l'intestazione DATA*/
printf("C: DATA\r\n");
printf("\r\n");
recv(s,answer,sizeof(answer),0);
printf("S: %s\n",answer);
printf("\r\n");
strcpy(answer,"");
strcpy(sendp,"");
send(s,"Subject:",strlen("Subject:"),0); /*manda l'intestazione Subject*/
printf("------> Scrivi l'oggetto del messaggio \r\n");
fflush(stdin);
fflush(stdout);
printf("\r\n");
strcpy(sendp1,"");
strcpy(sendp2,"");
gets(sendp2);
send(s,sendp2,sizeof(sendp2),0);
send(s,"\r\n",strlen("\r\n"),0);
strcpy(answer,"");
printf("\r\n");
strcpy(answer,"");
strcpy(answer,"");
strcpy(sendp,"");
strcpy(msped,"");
fflush(stdin);
fflush(stdout);
printf("------> Scrivi il messaggio su una sola linea\r\n");
fflush(stdin);
fflush(stdout);
printf("\r\n");
strcpy(msped," ");
strcpy(sendp," ");
gets(msped);
send(s,msped,sizeof(msped),0);
send(s,"\r\n",strlen("\r\n"),0);
send(s,".\r\n",strlen(".\r\n"),0);
/*send(s,"hello\r\n",strlen("hello\r\n"),0); */
/*manda hello*/
/*send(s,".\r\n",strlen(".\r\n"),0);*/
/*manda il . per indicare la fine del testo*/
printf("\r\n");
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stampa la risposta del server*/
printf("\r\n");
strcpy(answer,"");
send(s,"QUIT\r\n",strlen("QUIT\r\n"),0); /*manda il messaggio QUIT*/
strcpy(msped,"");
fflush(stdin);
fflush(stdout);
recv(s,answer,sizeof(answer),0); /*riceve la risposta del server*/
printf("S: %s\n",answer); /*stampa la risposta del server*/
printf("\r\n");
closesocket(s); /*chiude la socket*/
WSACleanup(); /*lascia la libreria delle socket per windows*/
printf("Done !\r\n"); /*stampa DONE!*/
printf("Grazie di aver mandato una email, arriverci \r\n");
break;