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 を一度に 1 つずつ試行し、そのうちの 1 つが成功すると、リストは破棄されます。どの SASL が試行されているかを知る唯一の方法は、Indy の Intercept コンポーネントの 1 つなどを使用して生のソケット トラフィックを監視し、送信されている IMAP コマンドを手動で解析することです。

于 2013-08-01T17:59:34.547 に答える