Код:
#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;
}
ТЕПЕРЬ ВСЕ РАБОТАЕТ!!! СПАСИБО ВСЕМ!!!
|