我想知道是否有人知道如何使用Indy类TIdIMAP4的capabilities property?它的文档似乎是最小的自动生成的文档,根本没有描述它的用途或用法。
所以我写了一些像这样的代码(连接已经在这个poing开放了)
if IMAP.Capabilities.IndexOf('MOVE')<>-1 then begin
IMAP.SendCmd(...);
end;
然而,当这似乎不起作用时,我开始调查并发现IMAP.Capabilities是一个空字符串列表。我知道服务器在连接时发送的功能没有请求它们,但它们似乎不会自动填充?我认为能力列表应该只是通过连接来填补,这是错误的吗?
或者是否还有其他一些我必须先打电话的命令? Capability命令看起来很有希望,除了该方法似乎将结果存储在用户提供的字符串列表中,所以我对IMAP中的字符串列表持怀疑态度.Capabilities将从此神奇地填充(如果是这种情况,为什么我必须提供一个空列表?) 编辑:看起来功能超载并且它有一个无参数版本。但是,在调用之后我仍然看到一个空白的功能列表。
答案 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;