Indy. Получение отчётов по POP3 (вложение) - как выбирать наиболее свежий?

MAxIL
Дата: 13.05.2011 12:56:53
Пытаюсь организовать из программы получение отчётов, присылаемых как вложение на определённый адрес электронной почты. Т.е., чтобы не через Outlook получать письма, выбирать последние, сохранять вручную вложения в каталог для обработки (автоматизировать этот процесс).
Основа ясна - необходимо настроить TIdPOP3 для соединения с сервером, проверить Connected... Приблизительно думаю сделать так:
procedure TMainForm.CheckMail(User, Pass: string);
var IP:TIdPOP3;
     CountMsg, i, j: Integer;
begin
 try
  IP.Username:=User;   //xxx@xxx.xx
  IP.Password:=Pass;
  IP.Host:=Host;       //pop.mail.ru
  IP.Port:=110;         //порт
  IP.Connect;
  if IP.Connected
  then begin
    CountMsg := IP.CheckMessages;
    for i := 1 to CountMsg do
    begin
     IP.Retrieve(i, IdMessage1);
     for j := 0 to IdMessage1.MessageParts.Count - 1 do
       if (IdMessage1.MessageParts.Items[j] is TIdAttachment)
        then TIdAttachment(IdMessage1.MessageParts.Items[j]).SaveToFile('C:\LOAD\'+
                    TIdAttachment(IdMessage1.MessageParts.Items[j]).FileName);
    end;
  end;
 except
    on E:Exception do Result:='Ошибка подключения! '+E.Message;
 end;
 IP.Disconnect;
end;
Как, для данного примера, организовать сохранение всех наиболее свежих вариантов отчёта в каталог "C:\LOAD\" (отчёты присылаются ежедневно, а, в некоторых случаях, может быть прислано и 2-3 в день)?
MAxIL
Дата: 13.05.2011 14:12:08
Так что же можно тут придумать?
- Возможно ли отсортировать получаемые письма по дате отправки, чтобы тупо заменять сохраняемые файлы при совпадении имён?
- Или, всё-же, можно как-нибудь узнать дату создания прикреплённого аттача до его SaveToFile?
- Или один выход: сохранять файл во временный каталог, а потом сравнивать и заменять/удалять?
Johnmen
Дата: 13.05.2011 14:15:58
Т.е. проблема в том, что в более позднем письме погут быть прикреплены более ранние версии файла?
Anatoly Podgoretsky
Дата: 13.05.2011 14:16:45
Имя Название_датавремя, ничего лучше не придумано.
Anatoly Podgoretsky
Дата: 13.05.2011 14:20:08
Johnmen
Т.е. проблема в том, что в более позднем письме погут быть прикреплены более ранние версии файла?

Это вообще не решение.
MAxIL
Дата: 13.05.2011 14:21:10
Johnmen, хотел предусмотретьи такой случай, т.к. отчёт может быть сформирован и отправлен программой, и, параллельно, вручную его может выслать на этот-же адрес пользователь (причём позже и старый).

Anatoly Podgoretsky, переименовывать файлы (отчёты) нельзя.
Johnmen
Дата: 13.05.2011 14:40:13
MAxIL,

М.б. распихиванием файлов по каталогам с именами <ДАТА ПИСЬМА> и с перезаписью файлов.
Johnmen
Дата: 13.05.2011 14:41:27
Anatoly Podgoretsky
Johnmen
Т.е. проблема в том, что в более позднем письме погут быть прикреплены более ранние версии файла?

Это вообще не решение.

Конечно - там же знак вопроса в конце. Т.е. это уточнение проблемы.
Anatoly Podgoretsky
Дата: 13.05.2011 14:48:32
MAxIL
Anatoly Podgoretsky, переименовывать файлы (отчёты) нельзя.

Портить можно, а переименовывать нельзя.
MAxIL
Дата: 13.05.2011 14:50:21
Johnmen,
ну ладно - нельзя объять необъятное... Если пользователь вышлет старый отчёт - сам виноват. Буду использовать IdMessage.Date. Сначала проверку на существование такого файла, а уже если есть - буду сравнивать даты... Вот только надо будет посмотреть - не станет ли применяться дата сохранения аттача = дата создания файла.
Если так- как отредактировать свойство файла - присвоить дату создания = IdMessage.Date ?