Imap4 客户端命令 LSUB
Imap4 client command LSUB
我对 function TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
这个实现有疑问:
function TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
begin
{CC2: This is one of the few cases where the server can return only "OK completed"
meaning that the user has no subscribed mailboxes.}
Result := False;
CheckConnectionState([csAuthenticated, csSelected]);
SendCmd(NewCmdCounter, IMAP4Commands[cmdLSub] + ' "" *',
[IMAP4Commands[cmdList], IMAP4Commands[cmdLSub]]); {Do not Localize}
if LastCmdResult.Code = IMAP_OK then begin
// ds - fixed bug # 506026
ParseLSubResult(AMailBoxList, LastCmdResult.Text);
Result := True;
end;
end;
当我调试时,我看到 LastCmdResult.Text
字符串列表是空的,但是 LastCmdResult.FormattedReply
字符串列表包含我的电子邮件服务器上的所有文件夹(收件箱、已发送、垃圾箱...)。当我尝试使用 LastCmdResult.FormattedReply
计数或文本时,它立即丢失了数据并给出了 LastCmdResult.FormattedReply.Count=0
和 LastCmdResult.FormattedReply.Text=''
。所以我想知道是否有办法在 LastCmdResult.FormattedReply
中输入数据并获取我的电子邮件服务器文件夹,或者有其他方法可以解决我的问题?
I have a problem with function TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
with this implementation :
当我使用最新的 SVN 版本的 Indy 尝试时,对我来说工作正常。
When I debug I see that the LastCmdResult.Text
stringlist is empty, but the LastCmdResult.FormattedReply
stringlist has all folders on my email server (Inbox, Sent, Trash, ...).
当我运行它时,情况正好相反。 LastCmdResult.Text
包含预期的文本,而 LastCmdResult.FFormattedReply
是空的(注意我直接提到了 FFormattedReply
数据成员,见下文)。
When I tried to use LastCmdResult.FormattedReply
count or text, it had immediately lost its data and gave LastCmdResult.FormattedReply.Count=0
and LastCmdResult.FormattedReply.Text=''
.
这是设计使然。 FormattedReply
属性 旨在供客户端用来解析服务器回复,以便它可以填充 TIdReply
的 属性 值,并由服务器用于使用 TIdReply 的 属性 值生成新回复。因此,您无法从客户端读取 FormattedReply
属性。
So I'd like to know if there is a way to enter the data inside LastCmdResult.FormattedReply
and get my email server folders or there is another way to solve my problem ?
ListSubscribedMailBoxes()
的全部目的是 return AMailBoxList
参数中的文件夹名称。如果这对您不起作用,那么
您正在使用 older/buggy 版本的 Indy。
您的服务器正在以 TIdIMAP4 无法解析的格式发送数据。
如果不知道您实际使用的是哪个版本的 Indy,或者服务器的回复数据实际上是什么样子,就无法以任何一种方式诊断您的问题。
我对 function TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
这个实现有疑问:
function TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
begin
{CC2: This is one of the few cases where the server can return only "OK completed"
meaning that the user has no subscribed mailboxes.}
Result := False;
CheckConnectionState([csAuthenticated, csSelected]);
SendCmd(NewCmdCounter, IMAP4Commands[cmdLSub] + ' "" *',
[IMAP4Commands[cmdList], IMAP4Commands[cmdLSub]]); {Do not Localize}
if LastCmdResult.Code = IMAP_OK then begin
// ds - fixed bug # 506026
ParseLSubResult(AMailBoxList, LastCmdResult.Text);
Result := True;
end;
end;
当我调试时,我看到 LastCmdResult.Text
字符串列表是空的,但是 LastCmdResult.FormattedReply
字符串列表包含我的电子邮件服务器上的所有文件夹(收件箱、已发送、垃圾箱...)。当我尝试使用 LastCmdResult.FormattedReply
计数或文本时,它立即丢失了数据并给出了 LastCmdResult.FormattedReply.Count=0
和 LastCmdResult.FormattedReply.Text=''
。所以我想知道是否有办法在 LastCmdResult.FormattedReply
中输入数据并获取我的电子邮件服务器文件夹,或者有其他方法可以解决我的问题?
I have a problem with function
TIdIMAP4.ListSubscribedMailBoxes(AMailBoxList: TStrings): Boolean;
with this implementation :
当我使用最新的 SVN 版本的 Indy 尝试时,对我来说工作正常。
When I debug I see that the
LastCmdResult.Text
stringlist is empty, but theLastCmdResult.FormattedReply
stringlist has all folders on my email server (Inbox, Sent, Trash, ...).
当我运行它时,情况正好相反。 LastCmdResult.Text
包含预期的文本,而 LastCmdResult.FFormattedReply
是空的(注意我直接提到了 FFormattedReply
数据成员,见下文)。
When I tried to use
LastCmdResult.FormattedReply
count or text, it had immediately lost its data and gaveLastCmdResult.FormattedReply.Count=0
andLastCmdResult.FormattedReply.Text=''
.
这是设计使然。 FormattedReply
属性 旨在供客户端用来解析服务器回复,以便它可以填充 TIdReply
的 属性 值,并由服务器用于使用 TIdReply 的 属性 值生成新回复。因此,您无法从客户端读取 FormattedReply
属性。
So I'd like to know if there is a way to enter the data inside
LastCmdResult.FormattedReply
and get my email server folders or there is another way to solve my problem ?
ListSubscribedMailBoxes()
的全部目的是 return AMailBoxList
参数中的文件夹名称。如果这对您不起作用,那么
您正在使用 older/buggy 版本的 Indy。
您的服务器正在以 TIdIMAP4 无法解析的格式发送数据。
如果不知道您实际使用的是哪个版本的 Indy,或者服务器的回复数据实际上是什么样子,就无法以任何一种方式诊断您的问题。