|
#1
|
||||
|
||||
Почтовый робот
Прошу помощи, пошарился в инете и написал код почтового робота который сканирует опред. каталог и если нахоходит фаил удовлетворяющий поиску отправляет по электронной почте...
Код:
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 Подскажите пожалуйста может кто знает? |
#2
|
||||
|
||||
Код:
IdSMTP1.Host := 'mymail@mail.ru'; IdSMTP1.Username :='DG'; IdSMTP1.Password:='1111111111'; 1. Проверь, на какой строке виснет (пройдись отладчиком по коду). 2. Так же, как и по одному типу, только в цикле. Советую вынести часть кода в отдельную процедуру. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
Код:
IdSMTP1.Host := 'mymail@mail.ru'; \\ устанавливаем smtp хост IdSMTP1.Username :='DG';\\ пользователь IdSMTP1.Password:='1111111111';\\ пароль Если что не так поправь.... С инди вообще некогда не работал.... |
#4
|
||||
|
||||
При чём тут инди?
Хост берём из руководства отсюда. Логин - полное мыло, с которого отправляем. Пароль - сам знаешь. Выглядеть должно как-то так: Код:
IdSMTP1.Host := 'smtp.mail.ru'; \\ устанавливаем smtp хост IdSMTP1.Username :='mymail@mail.ru';\\ пользователь IdSMTP1.Password:='1111111111';\\ пароль Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |