2015-05-07 3 views
6

Я пытаюсь получить количество непрочитанных сообщений моего почтового ящика IMAP, используя TIdIMAP4 от Indy 10.6.0.4975.Почему свойство TIdMailBox.UnseenMsgs возвращает значение 0?

Проблема заключается в том, что свойство UnseenMsgs возвращает 0, даже если в доступном почтовом ящике есть непрочитанные сообщения. Это код я использую:

procedure TForm1.FormClick(Sender: TObject); 
var 
    TotalMsgs: Integer; 
    UnseenMsgs: Integer; 
begin 
    IdIMAP41.Connect(True); 
    IdIMAP41.SelectMailBox('Inbox'); 

    TotalMsgs := IdIMAP41.MailBox.TotalMsgs; // returns correct value 
    UnseenMsgs := IdIMAP41.MailBox.UnseenMsgs; // <- returns always 0 

    IdIMAP41.Disconnect(False); 
end; 

Почему TIdMailBox.UnseenMsgs свойство возвращает 0 вместо правильного номера?

+2

@TLama: tbat должны были размещены в качестве ответа, а не комментарий. –

+0

@tlama благодаря вашей коррекции –

ответ

8

Перед тем как перейти к этому объекту, вызовите метод StatusMailBox. Он упоминается в документации UnseenMsgs собственности как:

UnseenMsgs обновляется, когда результаты метода TIdIMAP4.StatusMailBox разобраны.

Так что это нравится:

IdIMAP41.Connect(True); 
IdIMAP41.SelectMailBox('Inbox'); 
IdIMAP41.StatusMailBox('Inbox', IdIMAP41.MailBox); 

UnseenMsgs := IdIMAP41.MailBox.UnseenMsgs; 
+0

работает хорошо. я прочитал справку, но я не мог ее понять. Благодарю. –