Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2013, 17:27   #1
kirsanv43
 
Регистрация: 16.04.2012
Сообщений: 3
Вопрос нет ответа от почтового сервера

Добрый день, 2-ые сутки не могу решить проблему.

Судя по telnet

на любой запрос, я должен получать ответ от сервера, но он приходит только после подключения к серверу и на HELO, во всех других случаях после 2-х минутного ожидания получаю это: 421 gmx.com Service closing transmission channel - command timeout
]

В чем проблема ?

Код:
SOCKET ConnectSocket = INVALID_SOCKET;
char  recvData[512];
void SendToServer(char* msg, bool reciver = false)
{
	int result;
	result = send(ConnectSocket, msg, (int)strlen(msg), 0);
	if (result == SOCKET_ERROR) {
		printf("send failed: %d\n", WSAGetLastError());
		closesocket(ConnectSocket);
		WSACleanup();
		Sleep(5000);
	}

	if (reciver)
	{

		result = recv(ConnectSocket, recvData, 512, 0);
		printf(recvData);
	}
}


int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
	CreateConsole();

	WSADATA wsaData;
	std::string request;
	string response;
	int iResult;



	iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);//Настройка сокетов, указание версии

	if (iResult != 0) {
		printf("WSAStartup failed: %d\n", iResult);
		return 1;
	}

	struct addrinfo
		*ptr = NULL,*result = NULL,
		hints;


	ZeroMemory(&hints, sizeof(hints));
	hints.ai_family = AF_INET;
	hints.ai_socktype = SOCK_STREAM;
	hints.ai_protocol = IPPROTO_TCP;

	PCSTR host = "smtp.mail.com";
	PCSTR port = (PCSTR)"25";
	hostent* es = gethostbyname(host);
	iResult = getaddrinfo(host, port, &hints, &result);
	if (iResult != 0) {
		printf("getaddrinfo failed: %d\n", iResult);
		WSACleanup();
		return 1;
	}

	ptr = result;


	//Create socket
	ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype,
		ptr->ai_protocol);
	const int DEFAULT_BUFLEN = 512;


	int recvbuflen = DEFAULT_BUFLEN;

	char recvbuf[DEFAULT_BUFLEN];

	// Соединение с сервером
	iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
	if (iResult == SOCKET_ERROR) {
		closesocket(ConnectSocket);
		ConnectSocket = INVALID_SOCKET;
	}

	if (ConnectSocket == INVALID_SOCKET) {
		printf("Error at socket(): %ld\n", WSAGetLastError());
		freeaddrinfo(result);
		WSACleanup();
		return 1;
	}

	iResult = recv(ConnectSocket, recvbuf, 30, 0);//Поучил
	SendToServer("HELO smtp.mail.ru \r\n",true);//Получил


	SendToServer("AUTH LOGIN",true);// 421 gmx.com Service closing transmission channel - command timeout
]

	SendToServer("логин в base 64");

	SendToServer("пароль в base 64",true);

	SendToServer("MAIL FROM: <makjoker@bk.ru>");

	SendToServer("RCPT TO: <kirsanv43@yandex.ru> \r\n");
	
	SendToServer("DATA");
	
	SendToServer("asgasgasgasg");
	SendToServer(".");
	SendToServer("QUIT");
	
        iResult = shutdown(ConnectSocket, SD_SEND);
	if (iResult == SOCKET_ERROR) 
	{
		printf("shutdown failed: %d\n", WSAGetLastError());
		closesocket(ConnectSocket);
		WSACleanup();
		Sleep(5000);
		return 1;
	}
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	
	return TRUE;
}
kirsanv43 вне форума Ответить с цитированием
Старый 27.10.2013, 15:33   #2
kirsanv43
 
Регистрация: 16.04.2012
Сообщений: 3
По умолчанию

неужели никто не знает, я не спамер
kirsanv43 вне форума Ответить с цитированием
Старый 29.10.2013, 20:22   #3
kirsanv43
 
Регистрация: 16.04.2012
Сообщений: 3
По умолчанию

Нужно в конце каждого запроса добавлять \r\n
kirsanv43 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
расшифровка ответа сервера -Flover- Работа с сетью в Delphi 2 07.10.2013 20:06
Настройка почтового сервера MILLIONERR Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 5 30.04.2013 09:22
Анализ ответа сервера denis7656 PHP 2 27.04.2012 10:11
Получть адрес почтового сервера VadEr Работа с сетью в Delphi 3 07.03.2012 19:17
Обработка ответа от сервера Musho C# (си шарп) 1 13.10.2011 09:09