Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > SMTP сессия


Автор: Christoph 16.4.2009, 16:17
Надо вывести в мемо SMTP сессию, например что посылает клиент, что ответил клиент, как это реализовать не знаю, подскажите в каком направлении копать?
например что то такого 

C: HELLO 195.161.101.33
S: 250 smtp.mail.ru is ready 
S: 250 OK 
C: From: Drozd <[email protected]
C: To: Drol <[email protected]>
C: Subject: Hello 

Автор: Matematik 16.4.2009, 21:01
Цитата(Christoph @  16.4.2009,  16:17 Найти цитируемый пост)
как это реализовать

Memo.Lines.Add()
шутка.

В чем  именно проблема?
Всё что поcылается\принимается из сокета выводишь в мемо.
В Indy, например, за это отвечают компоненты IdLog...
Если что-то сомописное, можно добавить механизм событий, так же как в VCL.

Автор: Christoph 16.4.2009, 22:56
IdLogDebug    
IdLogStream    
IdLogEvent    
IdLogFile    
Какой из них?
Там есть метод Recieve это?

Автор: Matematik 17.4.2009, 11:40
Скорее всего нужен LogEvent, события OnReceived и OnSent

Код

procedure TForm1.IdLogEvent1Received(ASender: TComponent; const AText,
  AData: string);
begin
  memo1.Lines.Add('S: '+ADAta);
end;

procedure TForm1.IdLogEvent1Sent(ASender: TComponent; const AText,
  AData: string);
begin
  memo1.Lines.Add('C: '+ADAta);

end;


Пулучится воттак
Код

S: 220 mail.ru ESMTP Fri, 17 Apr 2009 12:31:46 +0400

C: EHLO acer

S: 250-mx2.mail.ru Hello acer [xxx]
250-SIZE 31457280
250-8BITMIME
250-AUTH PLAIN LOGIN
250 PIPELINING


Автор: Christoph 17.4.2009, 17:31
У меня вывело только это и все


OK id=1Luoxp-000PdR-00

Автор: Christoph 18.4.2009, 23:32
Ничего не получется ничего не выводит вот полный код 

Код

begin
 idSMTP1.Host:='smtp.mail.ru'; 
 idSMTP1.Port:=25; 
 idSMTP1.Username:='6'; 
 idSMTP1.Password:='6'; 
 idSMTP1.AuthenticationType:=atLogin; 
   with IdMessage1 do
      begin
        Body.Assign(Memo1.Lines); 
        From.Text := LabeledEdit2.Text;
        Recipients.EMailAddresses := LabeledEdit1.Text; 
        Subject := LabeledEdit3.Text; 

      idSMTP1.Connect; 
         try
           idSMTP1.Send(IdMessage1); 
         finally
            idSMTP1.Disconnect; 
         end;
end;

procedure TForm1.IdLogEvent1Sent(ASender: TComponent; const AText,
  AData: String);
begin
 memo2.Lines.Add('C: '+AData);
end;

procedure TForm1.IdLogEvent1Received(ASender: TComponent; const AText,
  AData: String);
begin
 memo2.Lines.Add('S: '+AData);
end;

Автор: Matematik 19.4.2009, 08:39
Сам компонент включил?
Код

IdSMTP1.Intercept := IdLogEvent1;
IdLogEvent1.LogTime := False;
IdLogEvent1.ReplaceCRLF := False;
IdLogEvent1.Active := True;

Автор: Christoph 20.4.2009, 01:27
Matematik, спасибо,+

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