2015-05-07 16 views
6

Ich versuche, die Anzahl der ungelesenen Nachrichten meines IMAP-Postfachs mithilfe von TIdIMAP4 von Indy 10.6.0.4975 zu erhalten.Warum gibt die Eigenschaft TIdMailBox.UnseenMsgs 0 zurück?

Das Problem besteht darin, dass die UnseenMsgs-Eigenschaft 0 zurückgibt, auch wenn einige ungelesene Nachrichten in dem Postfach vorhanden sind, auf das zugegriffen wird. Dies ist der Code, die ich benutze:

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; 

Warum hat die TIdMailBox.UnseenMsgs Eigenschaft return 0 statt richtige Nummer?

+2

@TLama: TBAT als Antwort geschrieben haben sollte, kein Kommentar. –

+0

@Tlama dank Ihrer Korrektur –

Antwort

8

Rufen Sie die Methode StatusMailBox auf, bevor Sie auf diese Eigenschaft zugreifen. Es ist in der UnseenMsgs Eigenschaft Dokumentation erwähnt als:

UnseenMsgs aktualisiert wird, wenn die Ergebnisse aus den TIdIMAP4.StatusMailBox Verfahren analysiert werden.

So tun es mag:

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

UnseenMsgs := IdIMAP41.MailBox.UnseenMsgs; 
+0

es funktioniert gut. Ich habe die Hilfe gelesen, aber ich konnte es nicht verstehen. Vielen Dank. –