Bonjour,
J'ai pioché un code sur internet et pour pouvoir communiquer avec le serveur smtp.
CA marche mais pas en localhost.

Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void CSmtp::SendData()
{
	int idx = 0,res,nLeft = strlen(SendBuf);
	fd_set fdwrite;
	timeval time;
 
	time.tv_sec = TIME_IN_SEC;
	time.tv_usec = 0;
 
	assert(SendBuf);
 
	if(SendBuf == NULL)
		throw ECSmtp(ECSmtp::SENDBUF_IS_EMPTY);
 
	while(1)
	{
		FD_ZERO(&fdwrite);
 
		FD_SET(hSocket,&fdwrite);
 
		if((res = select(hSocket+1,NULL,&fdwrite,NULL,&time)) == SOCKET_ERROR)
		{
			FD_CLR(hSocket,&fdwrite);
			throw ECSmtp(ECSmtp::WSA_SELECT);
		}
 
		if(!res)
		{
			//timeout
			FD_CLR(hSocket,&fdwrite);
			throw ECSmtp(ECSmtp::SERVER_NOT_RESPONDING);
		}
 
		if(res && FD_ISSET(hSocket,&fdwrite))
		{
			if(nLeft > 0)
			{
				if((res = send(hSocket,&SendBuf[idx],nLeft,0)) == SOCKET_ERROR)
				{
					FD_CLR(hSocket,&fdwrite);
					throw ECSmtp(ECSmtp::WSA_SEND);
				}
				if(!res)
					break;
				nLeft -= res;
				idx += res;
			}
			else
				break;
		}
	}
 
	FD_CLR(hSocket,&fdwrite);
	Sleep(250);
}

J'ai du ajouter la fonction Sleep(250); et ca marche.

Question :
Qu'est ce qui ne va pas dans le code 'SendData' pour ne pas que cela marche en localhost ?

Merci