SMTP implementation
Hello people
I am stuck here with a little problem. As i am intrested in doing a little socket programming. I was looking for SMTP implementation. i got it downloaded from the net. Now I want to know about it that how it works. I have certain confusions about the code, that I want to clear. I am uploading the soucrce (smtp.c file) and I have commented every line with my confusion. I hope some one expert in socket programming will help me out with this.Yesi know it would take a little time but would be a great contribution towards my learning Thank you all...for reading ommy:Pengy: ------------------------------------------------- here's the smtp code ---------------------------------------------- #include <stdio.h> #include <io.h> #include <stdio.h>//why do we need to include this again.....when we have done it above //#define LINUX /* define this if you are on linux */ //#define WIN32 /* define this if you are on windows */ #ifdef WIN32 # include "io.h" # include "winsock2.h" /* WSAGetLastError, WSAStartUp */ # define snprintf _snprintf #endif #ifdef LINUX # include <netdb.h> /* gethostbyname */ # include <netinet/in.h> /* htons */ # include <sys/socket.h> #endif static void sendmail_write( const int sock, const char *str, const char *arg ) { char buf[4096]; if (arg != NULL) snprintf(buf, sizeof(buf), str, arg); //I didnt get it else snprintf(buf, sizeof(buf), str); //I didnt get it send(sock, buf, strlen(buf), 0); //I didnt get it } static int sendmail( const char *from, const char *to, const char *subject, const char *body, const char *hostname, const int port ) { struct hostent *host; // where is hostent structure defined struct sockaddr_in saddr_in; //and where is this structure int sock = 0; #ifdef WIN32 WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { return -1; } #endif //should we disable it if we want it to be run on linux platform sock = socket(AF_INET, SOCK_STREAM, 0); //wot is AF_INET and SOCK_STREAM??// host = gethostbyname(hostname);//wher is gethostbyname saddr_in.sin_family = AF_INET; //didnt get it completely saddr_in.sin_port = htons((u_short)port);//didnt get it completely// saddr_in.sin_addr.s_addr = 0;//didnt get it completely memcpy((char*)&(saddr_in.sin_addr), host->h_addr, host->h_length);////didnt get it completely if (connect(sock, (struct sockaddr*)&saddr_in, sizeof(saddr_in)) == -1) {//didnt get it return -2; } sendmail_write(sock, "HELO %s\n", from); // greeting sendmail_write(sock, "MAIL FROM: %s\n", from); // from sendmail_write(sock, "RCPT TO: %s\n", to); // to sendmail_write(sock, "DATA\n", NULL); // begin data // next comes mail headers sendmail_write(sock, "From: %s\n", from);//would it ask for input from the user// sendmail_write(sock, "To: %s\n", to); sendmail_write(sock, "Subject: %s\n", subject); sendmail_write(sock, "\n", NULL); sendmail_write(sock, "%s\n", body); // data sendmail_write(sock, ".\n", NULL); // end data sendmail_write(sock, "QUIT\n", NULL); // terminate close(sock); return 0; } int main(int argc, char *argv[]) { int ret = sendmail( //what is this/how would it work "from@from-host.org", /* from */ "to@to-host.org", /* to */ "Subject", /* subject */ "body", /* body */ "hostname", /* hostname */ 25 /* port */ ); if (ret != 0) fprintf(stderr, "Failed to send mail (code: %i).\n", ret); else fprintf(stdout, "Mail successfully sent.\n"); return ret; } //also can someone refine it for linux platform so that i could run it with gcc...you know i dont have to comment and uncomment it....just the command to compile it and it gets compiled |
i need smtp implementation code
hello ommy,
i need the code of SMTP implementation. if u hv it..den plz mail me at rini.agarwal89@gmail.com. plz its urgent |
All times are GMT -5. The time now is 09:50 AM. |