Простой пример обработки входящей почты с использованием POP3 компонент Indy10 для Delphi 7
(практическая задача была: обработать уведомления о доставке)
на форме компоненты:
IdPOP3: TIdPOP3;
IdMessage: TIdMessage;
Ниже: текст процедуры
...
var
msgs: integer;
i: integer;
flag: boolean;
msgcnt: integer;
begin
IdPOP3.Host:= 'XXXX';
IdPOP3.Username:= 'XXXX';
IdPOP3.Password:= 'XXXX';
IdPOP3.Port:= 110;
IdPOP3.Connect;
try
msgcnt:= IdPOP3.CheckMessages;
for I:= msgcnt to 1 do
begin
IdMessage.Clear;
flag:= false;
if (IdPOP3.Retrieve(i, IdMessage)) then
begin
ProcessMessage(IdMessage.From.Address, IdMessage.Subject);
flag:= true;
end;
if flag then
begin
IdPOP3.Delete(i); //удаление письма
end;
end;
finally
IdPOP3.Disconnect;
end;
end;
UPD если нужно извлечь текст сообщения, может помочь такой код
var
locBody: string;
...
if (locBody = '') then
begin
for j:= 0 to IdMessage.MessageParts.Count - 1 do
begin
if (IdMessage.MessageParts[j] is TidText) then
begin
locBody:= (IdMessage.MessageParts[j] as TidText).Body.Text;
if locBody <> '' then break;
end;
end;
end;
...
Вопросы/пожелания/предложения оставляйте в комментариях.
см. также
Отправка почты через Smtp компоненты Indy10 в Delphi7
http://dev-doc.blogspot.com/2012/08/delphi-indy-10.html
За основу взял код на стековерфлоу
http://stackoverflow.com/questions/5336984/how-to-receive-emails-using-indy-10-and-delphi-7-with-the-file-attachment
Еще один простой пример
http://www.lazarus.freepascal.org/index.php?topic=17626.0
(практическая задача была: обработать уведомления о доставке)
на форме компоненты:
IdPOP3: TIdPOP3;
IdMessage: TIdMessage;
Ниже: текст процедуры
...
var
msgs: integer;
i: integer;
flag: boolean;
msgcnt: integer;
begin
IdPOP3.Host:= 'XXXX';
IdPOP3.Username:= 'XXXX';
IdPOP3.Password:= 'XXXX';
IdPOP3.Port:= 110;
IdPOP3.Connect;
try
msgcnt:= IdPOP3.CheckMessages;
for I:= msgcnt to 1 do
begin
IdMessage.Clear;
flag:= false;
if (IdPOP3.Retrieve(i, IdMessage)) then
begin
ProcessMessage(IdMessage.From.Address, IdMessage.Subject);
flag:= true;
end;
if flag then
begin
IdPOP3.Delete(i); //удаление письма
end;
end;
finally
IdPOP3.Disconnect;
end;
end;
UPD если нужно извлечь текст сообщения, может помочь такой код
var
locBody: string;
...
if (locBody = '') then
begin
for j:= 0 to IdMessage.MessageParts.Count - 1 do
begin
if (IdMessage.MessageParts[j] is TidText) then
begin
locBody:= (IdMessage.MessageParts[j] as TidText).Body.Text;
if locBody <> '' then break;
end;
end;
end;
...
Вопросы/пожелания/предложения оставляйте в комментариях.
см. также
Отправка почты через Smtp компоненты Indy10 в Delphi7
http://dev-doc.blogspot.com/2012/08/delphi-indy-10.html
За основу взял код на стековерфлоу
http://stackoverflow.com/questions/5336984/how-to-receive-emails-using-indy-10-and-delphi-7-with-the-file-attachment
Еще один простой пример
http://www.lazarus.freepascal.org/index.php?topic=17626.0
for I:= msgcnt to 1 do <----- DOWNTO
ОтветитьУдалитьа можно пример?
ОтветитьУдалить