Статьи по программированию
примеры программного кода
Delphi, Kylix, C, C++, SQL, Visual Basic, Bash, Assembler, 1С
Qt, KOL, MFC, Rx Library, Windows, Linux, Mac OS
Простая консольная программа для получения письма с заданной темой и записи прикрепленного файла в заданный каталог
Опубликовано codeLocker в 16.08.2008 в 08:17.
program RecMailer;
{$APPTYPE CONSOLE}
uses
SysUtils, IdPOP3, IdMessage, Classes;
var Host : String;
Port : Integer;
Username : String;
Password : String;
Subject : String;
DestPath : String;
i, j : Integer;
MsgCount : Integer;
POP : TIdPOP3;
Mes : TIdMessage;
ForDel : TStringList;
begin
if FindCmdLineSwitch('?',['-','\','/'], True) then begin
WriteLn('-h - set host (-h pop.mail.ru)');
WriteLn('-p - set port (-p 110), default 110');
WriteLn('-u - set username (-u <a href="mailto:admin@mail.ru" rel="nofollow">admin@mail.ru</a>)');
WriteLn('-psw - set password (-p my_password)');
WriteLn('-s - set subject fragment (-s "subject fragment"), not case sensetive');
WriteLn('-d - set dest path (-d "c:\my files\admin@mail.ru")');
exit;
end;
Port := 110;
i := 1;
while i <= ParamCount do begin
if (AnsiLowerCase(ParamStr(i)) = '-h') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-h"!!');
exit;
end;
Host := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-p') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-p"!!');
exit;
end;
try
Port := StrToInt(ParamStr(i + 1));
except
WriteLn('Parametr for "-p" is not integer type!!');
exit;
end;
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-u') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-u"!!');
exit;
end;
Username := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-psw') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-psw"!!');
exit;
end;
Password := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-s') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-s"!!');
exit;
end;
Subject := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-d') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-d"!!');
exit;
end;
DestPath := ParamStr(i + 1);
inc(i, 2);
continue;
end;
inc(i, 1);
end;
WriteLn('Now setting:');
WriteLn('Host : "' + Host +'"');
WriteLn('Port : "' + IntToStr(Port) +'"');
WriteLn('Username : "' + Username +'"');
if Password = '' then WriteLn('Password : not set!!!') else WriteLn('Password : set');
WriteLn('Subject : "' + Subject +'"');
WriteLn('DestPath : "' + DestPath +'"');
POP := TIdPOP3.Create(nil);
try
POP.Host := Host;
POP.Port := Port;
POP.Username := Username;
POP.Password := Password;
WriteLn('Connecting...');
POP.Connect;
WriteLn('Connected!');
WriteLn('Get message count...');
MsgCount := POP.CheckMessages;
WriteLn('Have ' + IntToStr(MsgCount) + ' message(s)!');
ForDel := TStringList.Create;
Mes := TIdMessage.Create(nil);
for i := MsgCount downto 1 do begin
Mes.Clear;
if POP.RetrieveHeader(i, Mes) then begin
if pos(AnsiLowerCase(Subject), AnsiLowerCase(Mes.Subject)) > 0 then begin
Writeln(format('Found mail: %s "%s".', [DateTimeToStr(Mes.Date), Mes.Subject]));
if POP.Retrieve(i, Mes) then begin
for j := 0 to Mes.MessageParts.Count - 1 do if Mes.MessageParts.Items[j] is TIdAttachment then begin
with TIdAttachment(Mes.MessageParts.Items[j]) do begin
try
DeleteFile(DestPath + '\' + FileName);
finally end;
WriteLn('Saving file to "' + DestPath + '\' + FileName + '"...');
SaveToFile(DestPath + '\' + FileName);
WriteLn('File saved!');
end;
end;
ForDel.AddObject(format('%s "%s".', [DateTimeToStr(Mes.Date), Mes.Subject]), Pointer(i));
end;
end;
end;
end;
for i := 0 to ForDel.Count - 1 do begin
WriteLn('Deleting mail "' + ForDel[i] + '"...');
POP.Delete(Integer(ForDel.Objects[i]));
WriteLn('Deleted!');
end;
WriteLn('Disconnecting...');
POP.Disconnect;
POP.Free;
except
on E: Exception do begin
WriteLn(E.Message);
Exit;
end;
end;
end.
{$APPTYPE CONSOLE}
uses
SysUtils, IdPOP3, IdMessage, Classes;
var Host : String;
Port : Integer;
Username : String;
Password : String;
Subject : String;
DestPath : String;
i, j : Integer;
MsgCount : Integer;
POP : TIdPOP3;
Mes : TIdMessage;
ForDel : TStringList;
begin
if FindCmdLineSwitch('?',['-','\','/'], True) then begin
WriteLn('-h - set host (-h pop.mail.ru)');
WriteLn('-p - set port (-p 110), default 110');
WriteLn('-u - set username (-u <a href="mailto:admin@mail.ru" rel="nofollow">admin@mail.ru</a>)');
WriteLn('-psw - set password (-p my_password)');
WriteLn('-s - set subject fragment (-s "subject fragment"), not case sensetive');
WriteLn('-d - set dest path (-d "c:\my files\admin@mail.ru")');
exit;
end;
Port := 110;
i := 1;
while i <= ParamCount do begin
if (AnsiLowerCase(ParamStr(i)) = '-h') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-h"!!');
exit;
end;
Host := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-p') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-p"!!');
exit;
end;
try
Port := StrToInt(ParamStr(i + 1));
except
WriteLn('Parametr for "-p" is not integer type!!');
exit;
end;
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-u') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-u"!!');
exit;
end;
Username := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-psw') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-psw"!!');
exit;
end;
Password := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-s') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-s"!!');
exit;
end;
Subject := ParamStr(i + 1);
inc(i, 2);
continue;
end;
if (AnsiLowerCase(ParamStr(i)) = '-d') then begin
if i + 1 > ParamCount then begin
WriteLn('Not set parametr for "-d"!!');
exit;
end;
DestPath := ParamStr(i + 1);
inc(i, 2);
continue;
end;
inc(i, 1);
end;
WriteLn('Now setting:');
WriteLn('Host : "' + Host +'"');
WriteLn('Port : "' + IntToStr(Port) +'"');
WriteLn('Username : "' + Username +'"');
if Password = '' then WriteLn('Password : not set!!!') else WriteLn('Password : set');
WriteLn('Subject : "' + Subject +'"');
WriteLn('DestPath : "' + DestPath +'"');
POP := TIdPOP3.Create(nil);
try
POP.Host := Host;
POP.Port := Port;
POP.Username := Username;
POP.Password := Password;
WriteLn('Connecting...');
POP.Connect;
WriteLn('Connected!');
WriteLn('Get message count...');
MsgCount := POP.CheckMessages;
WriteLn('Have ' + IntToStr(MsgCount) + ' message(s)!');
ForDel := TStringList.Create;
Mes := TIdMessage.Create(nil);
for i := MsgCount downto 1 do begin
Mes.Clear;
if POP.RetrieveHeader(i, Mes) then begin
if pos(AnsiLowerCase(Subject), AnsiLowerCase(Mes.Subject)) > 0 then begin
Writeln(format('Found mail: %s "%s".', [DateTimeToStr(Mes.Date), Mes.Subject]));
if POP.Retrieve(i, Mes) then begin
for j := 0 to Mes.MessageParts.Count - 1 do if Mes.MessageParts.Items[j] is TIdAttachment then begin
with TIdAttachment(Mes.MessageParts.Items[j]) do begin
try
DeleteFile(DestPath + '\' + FileName);
finally end;
WriteLn('Saving file to "' + DestPath + '\' + FileName + '"...');
SaveToFile(DestPath + '\' + FileName);
WriteLn('File saved!');
end;
end;
ForDel.AddObject(format('%s "%s".', [DateTimeToStr(Mes.Date), Mes.Subject]), Pointer(i));
end;
end;
end;
end;
for i := 0 to ForDel.Count - 1 do begin
WriteLn('Deleting mail "' + ForDel[i] + '"...');
POP.Delete(Integer(ForDel.Objects[i]));
WriteLn('Deleted!');
end;
WriteLn('Disconnecting...');
POP.Disconnect;
POP.Free;
except
on E: Exception do begin
WriteLn(E.Message);
Exit;
end;
end;
end.
Материал похожий на Простая консольная программа для получения письма с заданной темой и записи прикрепленного файла в заданный каталог
Метки
c set админ протокол admin cgi count cgi arp d arp s скачать программу ftp u ftp admin ftp скачать бесплатную ftp программу скачать бесплатно программу ftp http files mail http admin mapi e not found mail pop3
Навигация
Сейчас на сайте
Сейчас на сайте 0 пользователей и 1 гость.
Статистика
Всего материалов: 1387