Код | 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) { printf("error in wsaStartup\n"); return 1; } p = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(p == INVALID_SOCKET) { printf("Invalid socket\n"); } d_addr = gethostbyname("pop.mail.ru"); if(d_addr == NULL) { printf("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)))) { printf("Error in connect\n"); return 1; } else { printf("соединились с pop.mail.ru\n"); }
//создаем 2й сокет для smtp s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(s == INVALID_SOCKET) { printf("Invalid socket\n"); } d_addr = gethostbyname("smtp.mail.ru"); if(d_addr == NULL) { printf("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)))) { printf("Error in connect\n"); return 1; } else { printf("соединились c smtp.mail.ru\n"); } recv(p, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec)); //авторизуемся на pop strcpy(rec,"USER [email protected]\r\n"); send(p, rec, strlen(rec),0); printf("%s\n",rec);; recv(p, rec, sizeof(rec), 0); printf("%s\n",rec);
strcpy(rec,"PASS somePass\r\n"); send(p, rec, strlen(rec), 0); printf("%s\n",rec); recv(p, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec)); //пробуем отправить сообщение strcpy(rec, "HELO smtp.mail.ru\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec));
strcpy(rec, "MAIL FROM:[email protected]\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec));
strcpy(rec, "RCPT TO:[email protected]\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec));
strcpy(rec, "DATA\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec));
strcpy(rec, "from:[email protected]\r\nto:[email protected]\r\nsubject:Hello\r\nHello !!\r\n.\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); memset(rec, 0, sizeof(rec));
strcpy(rec, "QUIT\r\n"); send(s, rec, strlen(rec), 0); printf("%s\n",rec); recv(s, rec, sizeof(rec), 0); printf("%s\n",rec); closesocket(p); closesocket(s); WSACleanup();
|
Собственно, никаких ошибок не выходит, но письма на почте нет. |