Новичок
Профиль
Группа: Участник
Сообщений: 32
Регистрация: 30.12.2006
Репутация: нет Всего: нет
|
проблема с созданием smtp клиента пишет что отправлено нормально но снифером половил пакеты, увидел следуещее: | Код | EHLO localhost
220 mail.ru ESMTP Wed, 26 Sep 2007 19:28:49 +0400
250-mx34.mail.ru Hello localhost [77.122.162.226]
250-SIZE 31457280
250-8BITMIME
250-AUTH PLAIN LOGIN
250 PIPELINING
AUTH LOGIN login
pass
.MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
DATA
test
.
quit
|
тоесть нету ответов от сервера. вручную все нормально ниже сурс: | Код |
// smtpsend.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include <stdio.h> #include <winsock2.h> #include <stdlib.h> int smtp(void);
void main() { smtp(); }
int smtp(void) { WSADATA wsa; int err=WSAStartup(MAKEWORD(2,0),&wsa); if(err==SOCKET_ERROR) { printf("WSAStartup error"); return 0; } SOCKET sock; sock=socket(AF_INET,SOCK_STREAM,0); if (sock<0) { printf("Socket() error %d\n",WSAGetLastError()); return -1; } struct hostent *hostname; struct sockaddr_in webaddr; char *recvbuf; recvbuf = (char*)malloc(3); webaddr.sin_family = AF_INET; webaddr.sin_port = htons(25); hostname = gethostbyname("smtp.mail.ru"); if (hostname) { memcpy(&webaddr.sin_addr, hostname->h_addr, hostname->h_length); } else { return 1; }
err = connect(sock, (struct sockaddr *)&webaddr,sizeof(webaddr)) ; if ( err == SOCKET_ERROR) { closesocket (sock); printf("Unable to connect to server: %ld\n", WSAGetLastError()); WSACleanup(); return 1; } printf("Connectedd to the server.\n"); printf("EHLO localhost\n"); send(sock, "EHLO localhost\xD\xA\x0", strlen("EHLO localhost\xD\xA\x0"), 0);
if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error reciving EHLO answer\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("250", recvbuf, 3)) { printf("Error EHLO\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Authorization...\n"); send(sock, "AUTH LOGIN \xD\xA\x0", strlen("AUTH LOGIN \xD\xA\x0"), 0); if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error reciving AUTH answer\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("334", recvbuf, 3)) { printf("Error AUTH\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending LOGIN\n"); send(sock, "///\xD\xA\x0", strlen("///\xD\xA\x0"), 0); if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error reciving AUTH(login) answer\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("334", recvbuf, 3)) { printf("Error AUTH(login)\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending password\n"); send(sock, "///\xD\xA\x0", strlen("///\xD\xA\x0"), 0); if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error reciving AUTH(password) answer\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("235", recvbuf, 3)) { printf("Error AUTH(password)\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending sender mail\n"); send(sock, "MAIL FROM:<[email protected]> \xD\xA\x0", strlen("MAIL FROM:<[email protected]> \xD\xA\x0"), 0);
if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error sending sender email\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("250", recvbuf, 3)) { printf("Error sending sendera\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending reciver email\n"); send(sock, "RCPT TO:<[email protected]> \xD\xA\x0", strlen("RCPT TO:<[email protected]> \xD\xA\x0"), 0);
if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error sending recv email\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("250", recvbuf, 3)) { printf("Error sending recva\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending DATA 0_0\n"); send(sock, "DATA \xD\xA\x0", strlen("DATA \xD\xA\x0"), 0);
if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error sending DATA\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("354", recvbuf, 3)) { printf("Error DATAva\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Sending letter\n"); send(sock, "If i read this my fucken programm works\xD\xA\x0", strlen("If i read this my fucken programm works\xD\xA\x0"), 0); send(sock, ".", strlen("."), 0); send(sock, "\xD\xA\x0", strlen("\xD\xA\x0"), 0); if((err = recv(sock, recvbuf, sizeof(recvbuf) - 1, 0)) == SOCKET_ERROR) { printf("Error sending letter\n"); closesocket(sock); WSACleanup(); return 0; }
if(!strncmp("250", recvbuf, 3)) { printf("Error letter\n"); closesocket(sock); WSACleanup(); return 0; }
printf("Letter sended=)\n\n\n\n"); send(sock, "quit\xD\xA\x0", strlen("quit\xD\xA\x0"), 0);
closesocket(sock); WSACleanup(); return 0;
} [/code=cpp]
|
|