2015-05-07 17 views
6

Próbuję uzyskać liczbę nieprzeczytanych wiadomości z mojej skrzynki pocztowej IMAP przy użyciu TIdIMAP4 z Indy 10.6.0.4975.Dlaczego właściwość TIdMailBox.UnseenMsgs zwraca wartość 0?

Problem polega na tym, że właściwość UnseenMsgs zwraca 0, nawet jeśli w dostępnej skrzynce pocztowej znajdują się jakieś nieprzeczytane wiadomości. Jest to kod używam:

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; 

Dlaczego powrót TIdMailBox.UnseenMsgs nieruchomość 0 zamiast prawidłowej liczby?

+2

@TLama: tbat powinny zostały zaksięgowane jako odpowiedź, a nie komentarz. –

+0

@tlama dzięki twojej korekcie –

Odpowiedz

8

Zadzwoń na metodę StatusMailBox przed uzyskaniem dostępu do tej właściwości. Jest on wymieniony w dokumentacji UnseenMsgs własności jak:

UnseenMsgs jest aktualizowany, gdy wyniki uzyskane metodą TIdIMAP4.StatusMailBox są analizowane.

Więc jak to zrobić:

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

UnseenMsgs := IdIMAP41.MailBox.UnseenMsgs; 
+0

to działa dobrze. Przeczytałem pomoc, ale nie mogłem tego zrozumieć. dzięki. –

Powiązane problemy