Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Новое письмо


Автор: Silmarion 21.11.2005, 12:46
Всем привет!
Как при помощи Indy компонентов и каких узнать что письмо новое?
P.S.: Огромная просьба с примером...
smile

Автор: Silmarion 21.11.2005, 13:21
НЕВЕРЮ что никто не знает...

Автор: Snowy 21.11.2005, 14:09
Чтобы узнать, что письмо новое, программа должна запоминать ID писем, которые уже закачены.
При новой проверке ящика, просто заново сканишь все ID и находишь те, которых еще нет в базе.

Автор: Snowy 21.11.2005, 14:20
Получить ID из TIdMessage:
Код

var
  pop: TIdPOP3;
  i,k: LongInt;
  id: string;
  msg: TIdMessage;
begin
  pop:=TIdPOP3.Create(nil);
  k:=TIdPOP3.CheckMessages;
  for i:=0 to k-1 do begin
    msg:=TIdMessage.Create(nil);
    IdPOP3.RetrieveHeader(i, msg); // получить заголовки письма
    id:=msg.Headers[msg.Headers.IndexOfName('Message-ID')]; // взять ID
    // тут мы проверяем, а нет ли письма с таким ID
    // реализация на свой цвет и вкус.
    msg.Free;
  end;
  pop.Free;
end;


Добавлено @ 14:23
Код грубый. Только сама суть.
Нужно добавить обработку исключений и разбить код получения ID на 2 строки (на случай отсутствия такогого. Маловероятно, но могет быть).
Но общая суть такая.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)