Прошу помощи, пошарился в инете и написал код почтового робота который сканирует опред. каталог и если нахоходит фаил удовлетворяющий поиску отправляет по электронной почте...
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
path:string;
F: TSearchRec;
Attr: Integer;
mes: TIdMessage;
error : Integer;
begin
dtp.DateTime:=date;
dec(s);
timer.Caption:=IntToStr(s);
if timer.Caption='0' then begin
timer1.Enabled:=false;
{Искать все файлы в заданной директории с расширение .wav}
Path := edit1.text+'*.dbf;
{которые имеют атрибуты "Только для чтения" и "Архивный"}
Attr := faReadOnly + faArchive;
FindFirst(Path, Attr, F);
{Если хотя бы один файл найден, то продолжить поиск}
if F.name <> '' then begin
// ListBox1.Items.Add('Наиден фаил: '+F.name +' ['+datetostr(dtp.Date)+'] ['+timetostr(dtp.Time)+']'); {Добавление в TListBox имени найденного файла}
if DirectoryExists(edit1.Text+'ARH\'+ formatdatetime('dd.mm.yyyy', (dtp.Date))) then begin
IdSMTP1.Host := 'mymail@mail.ru';
IdSMTP1.Username :='DG';
IdSMTP1.Password:='1111111111';
Mes := TIdMessage.Create( nil );
try
mes.Date := dtp.Date;
mes.Body.Add('Message generated by system ZEON ['+datetostr(dtp.Date)+'] '+' ['+datetostr(dtp.time)+']');
mes.From.Text := 'From';
mes.Recipients.EMailAddresses := 'tomail@mail.ru';
mes.Subject := 'Form III';
mes.From.Name := 'mymail@mail.ru';
mes.From.Address := 'mymail@mail.ru';
tIdAttachmentFile.Create( Mes.MessageParts, edit1.Text+F.Name );
//ListBox1.Items.Add('Отправляю письмо'+' ['+datetostr(dtp.Date)+'] ['+timetostr(dtp.Time)+']');
IdSMTP1.Connect;
try
IdSMTP1.Send(Mes);
finally
IdSMTP1.Disconnect;
end;
finally
FreeAndNil( Mes );
//ListBox1.Items.Add('Письмо отправленно'+' ['+datetostr(dtp.Date)+'] ['+timetostr(dtp.Time)+']');
MoveFile ((PWideChar(edit1.Text+F.Name)), (pwidechar(edit1.text+'ARH\'+ formatdatetime('dd.mm.yyyy', (dtp.Date))+'\'+ F.Name)));
//ListBox1.Items.Add('Фаил: '+F.Name+' пекремещен в архив за '+formatdatetime('dd.mm.yyyy', (dtp.Date)));
end;
end
else
{$IOChecks off};
MkDir(edit1.Text+'ARH\'+ formatdatetime('dd.mm.yyyy', (dtp.Date)));
error := IOResult;
if error = 0 then begin
//ListBox1.Items.Add('Создан каталог дня ['+datetostr(dtp.Date)+']' );
IdSMTP1.Host := 'mymail@mail.ru';
IdSMTP1.Username :='DG';
IdSMTP1.Password:='1111111111';
Mes := TIdMessage.Create( nil );
try
mes.Date := dtp.Date;
mes.Body.Add('Message generated by system ZEON ['+datetostr(dtp.Date)+'] '+' ['+datetostr(dtp.time)+']');
mes.From.Text := 'From';
mes.Recipients.EMailAddresses := 'tomail@mail.ru';
mes.Subject := 'Form III';
mes.From.Name := 'mymail@mail.ru';
mes.From.Address := 'mymail@mail.ru';
tIdAttachmentFile.Create( Mes.MessageParts, edit1.Text+F.Name );
//ListBox1.Items.Add('Отправляю письмо'+' ['+datetostr(dtp.Date)+'] ['+timetostr(dtp.Time)+']');
IdSMTP1.Connect;
try
IdSMTP1.Send(Mes);
finally
IdSMTP1.Disconnect;
end;
finally
FreeAndNil( Mes );
//ListBox1.Items.Add('Письмо отправленно'+' ['+datetostr(dtp.Date)+'] ['+timetostr(dtp.Time)+']');
MoveFile ((PWideChar(edit1.Text+F.Name)), (pwidechar(edit1.text+'ARH\'+ formatdatetime('dd.mm.yyyy', (dtp.Date))+'\'+ F.Name)));
//ListBox1.Items.Add('Фаил: '+F.Name+' пекремещен в архив за '+formatdatetime('dd.mm.yyyy', (dtp.Date)));
end;
end;
end;
s:=strtoint(edit2.Text);
timer1.Enabled:=true;
end;
end;
Проблемы:
1. Находит фаил, отправляет и зависает (помогает убийство процесса);
2. Как организовать поиск нескольких файлов например dbf и txt
Подскажите пожалуйста может кто знает?