如何使用TidIMAP4的功能属性?

时间:2015-06-24 01:18:04

标签: delphi indy indy10

我想知道是否有人知道如何使用Indy类TIdIMAP4的capabilities property?它的文档似乎是最小的自动生成的文档,根本没有描述它的用途或用法。

所以我写了一些像这样的代码(连接已经在这个poing开放了)

if IMAP.Capabilities.IndexOf('MOVE')<>-1 then begin
  IMAP.SendCmd(...);
end;

然而,当这似乎不起作用时,我开始调查并发现IMAP.Capabilities是一个空字符串列表。我知道服务器在连接时发送的功能没有请求它们,但它们似乎不会自动填充?我认为能力列表应该只是通过连接来填补,这是错误的吗?

或者是否还有其他一些我必须先打电话的命令? Capability命令看起来很有希望,除了该方法似乎将结果存储在用户提供的字符串列表中,所以我对IMAP中的字符串列表持怀疑态度.Capabilities将从此神奇地填充(如果是这种情况,为什么我必须提供一个空列表?) 编辑:看起来功能超载并且它有一个无参数版本。但是,在调用之后我仍然看到一个空白的功能列表。

1 个答案:

答案 0 :(得分:0)

我决定使用Capability的其他重载版本,在其中为功能函数提供字符串列表。这没有返回一个空列表。我怀疑其他方法由于某种类型的可变范围问题而无法正常工作,所以这只是部分答案。

以这种方式使用Capability确实有效:

var
  capas : TStrings;
begin
  capas := TStringList.Create;
  IMAP.Capability(capas);
  if (capas.IndexOf('UIDPLUS')<>-1) then
    IMAP.SendCmd('UID EXPUNGE '+uidList.commaText);
  capas.free;
end;