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


Автор: Exai1e 18.5.2007, 15:06
Здрасти. Возникла вот такая проблема:
Есть код
Код

 if CheckBox1.Checked = false then
    begin
      if MyHost = '@mail.ru' then fmMain.IdSMTP1.Host := 'smtp.mail.ru';
      if MyHost = '@gmail.ru' then fmMain.IdSMTP1.Host := 'smtp.gmail.ru';
      if MyHost = '@yahoo.com' then fmMain.IdSMTP1.Host := 'smtp.yahoo.com';
      fmMain.IdSMTP1.Port := 25;
      fmMain.IdSMTP1.Username := MyLogin;
      fmMain.IdSMTP1.Password := MyPassword;
      fmMain.IdMessage1.CharSet := 'WINDOWS-1251';
      fmMain.IdMessage1.Subject := fmMain.edSubject.Text;
      fmMain.IdMessage1.Recipients.EMailAddresses := fmMain.edTarget.Text + fmMain.cbHost.Text;
      fmMain.IdMessage1.From.Address := MyLogin + MyHost;
      fmMain.IdMessage1.Body.Text := fmMain.edSendText.Text;
      try
        fmMain.IdSMTP1.Connect;
        fmMain.IdSMTP1.Send(fmMain.IdMessage1);
        fmMain.StatusBar1.Panels[0].Text := 'Сообщение отправленно';
      except
        ShowMessage('Отправка не удалась');
      end;
      fmMain.IdSMTP1.Disconnect;
    end;


Вопрос: как можно вывести процесс отправки сообщения ? как в IE процесс открывания страницы (синенькая полосочка снизу в левом углу на статусбаре)
Спасибо.

Автор: maniaks1 18.5.2007, 15:17
Можно показывать пользователю, что сейчас происходит...

Код

procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  Caption:=AStatusText;
end;


Если чуть извратиться, то можно вывести и ProgressBar, например посчитать сколько всего сообщений показываеться при отправке, и при каждом сообщении изменять счётчик
Код

  ProgressBar1:=ProgressBar1+1;
 

Правда это фигня получиться...

Автор: Exai1e 18.5.2007, 15:40
maniaks1, Спасибо

Автор: Exai1e 20.5.2007, 02:04
хех, все бы ничего, но когда крепиш к письму фаил норм размера и отправляеш - то программа какбы зависает... 
так что Лююди) как вывести процес отправки письма в ProgressBar ?

Автор: Poseidon 20.5.2007, 02:14
проверяй какой обьем данных отправлен. На основании этого, а так же размера файла и самого тела писма определяй % отправки

Автор: MetalFan 20.5.2007, 11:08
мм... я не уверен конечно, не сталкивался с idSMTP...
но у него, так же как и у idHTTP, есть 3 события OnWorkBegin, OnWork и OnWorkEnd.
в OnWorkBegin запоминаешь AWorkCountMax, в OnWork вычисляешь процент передачи как AWorkCount / FWorkCountMax * 100...
ну и в прогрессбар это все) + прогрессбар.Update + Application.ProcessMessages
p.s. теме место имхо в "Сетях"

Автор: Exai1e 20.5.2007, 12:04
MetalFan, всем спасибо, разобрался

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