procedure TForm1.Button2Click(Sender: TObject);
begin
SMTP.Host:='smtp.bk.ru'; // адресс почтового сервера
SMTP.Port:=25; // порт по которому будет осуществляться подключение
SMTP.Username:='ххххххх'; // логин пользователя
SMTP.Password:='ххххххх'; // пароль пользователя
SMTP.AuthenticationType:=atLogin;
with IdMessage do
begin
Body.Assign(Memo1.Lines);
From.Text := 'хххххх@bk.ru';
Recipients.EMailAddresses := 'хххххх@yandex.ru'; //кому
Subject := 'CODENET'; //тема письма
end;
SMTP.Connect;
try
SMTP.Send(IdMessage);
finally
SMTP.Disconnect;
showmessage('Отправлено');
end;
end;
Как повесить Progressbar на отправку эл. письма (как в TheBat).
Код:
Можно в событии OnStatus компонента idSMTP написать:
Код:
Memo2.Lines.Insert(0,'Статус отправки: '+AStatusText);
и тогда в memo2 будет "текстовая визуализация" процесса отправки письма, но она не информативна.
Код:
procedure TForm1.SMTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
var S: TMemoryStream;
begin
if AWorkMode <> wmWrite then Exit;
S := TMemoryStream.Create;
try
// получаем размер всего сообщения
IdMessage.SaveToStream(S, False);
ProgressBar1.Min := 0;
ProgressBar1.Position := 0;
ProgressBar1.Max := S.Size;
// вычитаем заголовок
S.Clear;
IdMessage.SaveToStream(S, True);
ProgressBar1.Max := ProgressBar1.Max - S.Size;
finally
S.Free;
end;
end;
procedure TForm1.SMTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if AWorkMode = wmWrite then ProgressBar1.Position := AWorkCount;
end;
procedure TForm1.SMTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
if AWorkMode = wmWrite then ProgressBar1.Position := 0;
end;
const AWorkCountMax: Integer);
var S: TMemoryStream;
begin
if AWorkMode <> wmWrite then Exit;
S := TMemoryStream.Create;
try
// получаем размер всего сообщения
IdMessage.SaveToStream(S, False);
ProgressBar1.Min := 0;
ProgressBar1.Position := 0;
ProgressBar1.Max := S.Size;
// вычитаем заголовок
S.Clear;
IdMessage.SaveToStream(S, True);
ProgressBar1.Max := ProgressBar1.Max - S.Size;
finally
S.Free;
end;
end;
procedure TForm1.SMTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if AWorkMode = wmWrite then ProgressBar1.Position := AWorkCount;
end;
procedure TForm1.SMTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
if AWorkMode = wmWrite then ProgressBar1.Position := 0;
end;