Когда вы говорите с SMTP-сервером как отправителем, приемный / почтовый сервер должен сначала отправить 220 отправителю.
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA
S: MAIL FROM:<Smith@USC-ISIF.ARPA>
R: 250 OK
S: RCPT TO:<Jones@BBN-UNIX.ARPA>
R: 250 OK
S: RCPT TO:<Green@BBN-UNIX.ARPA>
R: 550 No such user here
S: RCPT TO:<Brown@BBN-UNIX.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
R: Рецептор - локальный SMTP-сервер
S: указывает местного отправителя
В основном вы должны:
recv(s,lpszBuff,200,0); // for 220
cout << lpszBuff;
sprintf(lpszBuff,"HELO Mail-Server\r\n");
send(s,lpszBuff,strlen(lpszBuff),0);
recv(s,lpszBuff,100,0);
cout << lpszBuff;
Убедитесь, что ваше гнездо находится в режиме блокировки.