为什么TIdMailBox.UnseenMsgs属性返回0值?

时间:2015-05-07 14:15:20

标签: delphi indy delphi-xe4

我正在尝试使用Indy 10.6.0.4975中的TIdIMAP4获取我的IMAP邮箱的未读邮件数。

问题是,即使访问邮箱中有一些未读邮件,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而不是正确的数字?

1 个答案:

答案 0 :(得分:9)

在访问该属性之前调用StatusMailBox方法。它在UnseenMsgs属性文档中提到:

  

来自TIdIMAP4.StatusMailBox的结果会更新UnseenMsgs   方法被解析。

所以这样做:

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

UnseenMsgs := IdIMAP41.MailBox.UnseenMsgs;