Показать сообщение отдельно

  #9  
Старый 18.01.2010, 09:33
isqad88
Новичок
Регистрация: 16.12.2009
Сообщений: 14
Провел на форуме:
20162

Репутация: 0
По умолчанию

Код:
#pragma comment(lib, "Ws2_32.lib")
#include <iostream>
#include <winsock2.h>


using namespace std;



int main()
{
	int err;
	WSADATA wsaData;
	SOCKET s;
	SOCKET p;
	hostent *d_addr;
	struct sockaddr_in addr;
	char rec[1024];

	

	err = WSAStartup(MAKEWORD(1,1), &wsaData);
	if(err != 0)
	{
		cout<<"Error: "<<err<<"\n";
		return 1;
	}
	p = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(p == INVALID_SOCKET)
	{
		cout<<"Invalid socket\n";
	}
	d_addr = gethostbyname("pop.mail.ru");
	if(d_addr == NULL)
	{
		cout<<"Error gethostbyname\n";
		return 1;
	};
	
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
	addr.sin_port = htons (110);
	if(SOCKET_ERROR == (connect(p, (sockaddr *) &addr, sizeof (addr))))
	{
		cout<<"Error in connect\n";
		return 1;
	} else
	{
		cout<<"YsneLIIHoe coegunenue c pop.mail.ru\n";
	}
	
	//создаем 2й сокет для smtp
	s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(s == INVALID_SOCKET)
	{
		cout<<"Invalid socket\n";
	}
	d_addr = gethostbyname("smtp.mail.ru");
	if(d_addr == NULL)
	{
		cout<<"Error gethostbyname\n";
		return 1;
	};
	
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
	addr.sin_port = htons (25);
	if(SOCKET_ERROR == (connect(s, (sockaddr *) &addr, sizeof (addr))))
	{
		cout<<"Error in connect\n";
		return 1;
	} else
	{
		cout<<"YsneLIIHoe coegunenue c smtp.mail.ru\n";
	}
	recv(p, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));
	//авторизуемся на pop
	strcpy(rec,"USER user\r\n");
	send(p, rec, strlen(rec),0);
	cout<<rec<<"\n";
	recv(p, rec, sizeof(rec), 0);
	cout<<rec<<"\n";

	strcpy(rec,"PASS parol\r\n");
	send(p, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(p, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));
	//пробуем отправить сообщение
	strcpy(rec, "HELO smtp.mail.ru\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));

	strcpy(rec, "MAIL FROM:user@mail.ru\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));

	strcpy(rec, "RCPT TO:user2@mail.ru\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));

	strcpy(rec, "DATA\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));

	strcpy(rec, "from:user@mail.ru\r\nto:user2@mail.ru\r\nsubject:Hello\r\nHello Andrew!!\r\n.\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	memset(rec, 0, sizeof(rec));

	strcpy(rec, "QUIT\r\n");
	send(s, rec, strlen(rec), 0);
	cout<<rec<<"\n";
	recv(s, rec, sizeof(rec), 0);
	cout<<rec<<"\n";
	













	closesocket(p);
	closesocket(s);
	WSACleanup();

	return 0;
}
ТЕПЕРЬ ВСЕ РАБОТАЕТ!!! СПАСИБО ВСЕМ!!!
 
Ответить с цитированием