4

在我的代码中,在创建 TIdIMAP4 连接之前,我设置了一大堆 SASL 机制,希望按照规定的“最好到最差”的顺序,如下所示:

IMAP.SASLMechanisms.Add.SASL := mIdSASLCRAMSHA1;
IMAP.SASLMechanisms.Add.SASL := mIdSASLCRAMMD5;
IMAP.SASLMechanisms.Add.SASL := mIdSASLSKey;
IMAP.SASLMechanisms.Add.SASL := mIdSASLOTP;
IMAP.SASLMechanisms.Add.SASL := mIdSASLAnonymous;
IMAP.SASLMechanisms.Add.SASL := mIdSASLExternal;
IMAP.SASLMechanisms.Add.SASL := mIdSASLLogin;
IMAP.SASLMechanisms.Add.SASL := mIdSASLPlain;

我正在设置IMAP.AuthType := iatSASL;,所以我认为它应该与 SASL 连接。但是有什么方法(比如,在建立连接之后)找出它在创建连接时实际使用的 SASL 机制吗?

4

1 回答 1

1

抱歉,在 Indy 中没有任何东西可以找出尝试和/或成功的 SASL。Indy 将 的内容与SASLMechanisms服务器报告的 SASL 进行比较,建立一个匹配列表,然后遍历该列表,一次尝试每个 SASL,直到其中一个成功,然后丢弃该列表。了解正在尝试哪些 SASL 的唯一方法是监视原始套接字流量,例如使用 Indy 的 Intercept 组件之一,并手动解析正在发送的 IMAP 命令。

于 2013-08-01T17:59:34.547 回答