Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > ClientSocket: SMTP когда послать "EHLO"?


Автор: _int64 17.3.2007, 11:28
Код

bool endread;
AnsiString buf;

void __fastcall TForm1::Button1Click(TObject *Sender)
{

  CSocket->Host = "smtp.mail.ru";
  CSocket->Port =25;
  CSocket->Active =1;

  while (endread);
  endread=0;
  CSocket->Socket->SendText("EHLO 174.21.21.21\n");
}
void __fastcall TForm1::CSocketRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
        buf= CSocket->Socket->ReceiveText();
        Memo1->Lines->Add("READ: "+buf );
        endread=1;
}



Дождался когда получил приглашение сервера:
Цитата
220 mail.ru ESMTP Sat, 17 Mar 2007 11:05:49 +0300

потом отправил 
Цитата

EHLO 174.21.21.21
 и в ответ тишина....
хотя в телнете отвечает на это вот так
Цитата

250-mx3.mail.ru Hello 174.21.21.21 [тут мой ip] 
250-SIZE 10485760
250-8BITMIME
250-AUTH PLAIN LOGIN
250 PIPELINING



Автор: FFFFFFF7 17.3.2007, 14:08
=)))))))))))))))))))))

HELO
а не EHLO

Автор: Dude03 17.3.2007, 16:10
Цитата(FFFFFFF7 @  17.3.2007,  14:08 Найти цитируемый пост)
=)))))))))))))))))))))

HELO
а не EHLO

RFC 1869 предписывает начинать сессию не командой HELO, а командой EHLO. В случае, если сервер не поддерживает расширений, то он ответит на EHLO ошибкой, в этом случае клиент должен послать команду HELO и не использовать расширения протокола. © wikipedia

Автор: FFFFFFF7 17.3.2007, 17:13
пусть будет по-вашему

Автор: SparF 17.3.2007, 19:57
Напишите простейший эхо-сервер. Т.е который будет принимать соединение и тупо отображать на экране все то, что ему прислали - это позволит отладить работу сетевой части клиента. (как, к примеру, telnet позволяет отладить работу сервера)
А зачем 
Цитата(_int64 @  17.3.2007,  11:28 Найти цитируемый пост)
EHLO 174.21.21.21

помнится хватало просто 
Цитата

EHLO

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)