SMTP in action
>> Wednesday, October 14, 2009
Check here for description of SMTP protocol. Here's a translation into socket programming codes.
Suppose
#include "windows.h"
#include "winsock.h"
#include "stdio.h"
#pragma comment(lib,"WS2_32")
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
hostent *d_addr;
char text[1024];
int main()
{
WSAStartup(MAKEWORD(1,1), &ws);
s = socket(AF_INET,SOCK_STREAM, 0);
d_addr = gethostbyname("smtp.mail.ru");
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long *)d_addr->h_addr);
addr.sin_port = htons(25);
connect(s,(sockaddr*)&addr,sizeof(addr));
recv(s,text,sizeof(text), 0);
printf("recv - %s", text);
strcpy(text,"HELO smtp.mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("send - %s", text);
strcpy(text,"MAIL FROM: sender@gmail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("recv - %s", text);
strcpy(text,"RCPT TO: receiver@hotmail.com\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
strcpy(text,"DATA\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("recv - %s", text);
strcpy(text,"FROM: sender@mail.ru\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
strcpy(text,"TO: receiver@hotmail.com\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
strcpy(text,"SUBJECT: test\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
strcpy(text,"Hi!\nIt is a message for you\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
strcpy(text,"\r\n.\r\n");
send(s,text,strlen(text),0);
printf("send - %s", text);
recv(s,text,sizeof(text),0);
printf("recv - %s", text);
strcpy(text,"QUIT");
send(s,text,strlen(text),0);
printf("send - %s", text);
closesocket(s);
return 0;
}
0 comments:
Post a Comment