Я делаю просто для удовольствия приложение для проверки непрочитанных сообщений в Delphi. Я использую Indy 10. Я могу подключиться к Gmail и получить все сообщения, но у меня возникла проблема: я не могу определить, прочитано ли уже сообщение или нет. В компоненте TidMessage есть свойство flag, которое должно сообщать мне, прочитано ли сообщение.
Код выглядит так:
procedure TForm1.btTestConnectionClick(Sender: TObject);
var
i: Integer;
count: Integer;
flag: TIdMessageFlags;
begin
if (pop3Test.Connected) then begin
pop3Test.Disconnect;
end;
pop3Test.Username := edAccount.Text;
pop3Test.Password := edPassword.Text;
pop3Test.Host := HOST;
pop3Test.AuthType := patUserPass;
pop3Test.Port := PORT;
pop3Test.Connect;
Count := 0;
for i := pop3Test.CheckMessages downto 1 do begin
pop3Test.Retrieve(i, IdMessage1);
if (mfSeen in IdMessage1.Flags) then begin
Count := Count + 1;
end;
end;
ShowMessage(IntToStr(Count));
pop3Test.Disconnect;
end;
В тестовом почтовом ящике есть одно непрочитанное сообщение, но все извлеченные сообщения имеют свойство flags enum пустое, поэтому результат всегда равен 0. Я что-то не так делаю? Это проблема совместимости Indy / Gmail?
Спасибо.
РЕДАКТИРОВАТЬ: Я определенно делаю что-то не так, поскольку тестирование с учетной записью Hotmail показывает ту же проблему свойства empty-flags.