0

Indy TIdIMAP4 コンポーネント (バージョン 10.6.0) を使用して Exchange サーバーに接続しています。IMAP4rev1 では US-ASCII 以外は許可されていないように見えるため、パスワードに単純な文字のみが含まれている場合、これは正常に機能します。ただし、パスワードにドイツ語のウムラウトやスペースなどの特殊文字が含まれている場合、認証はIMAPConnection.Connect失敗します。つまり、「ログインに失敗しました」という例外がスローされます。

これは、SASL に関する TIdIMAP4 コンポーネントのバグが原因だと思いますが、それについてはわかりません。

そのバグが関係ない場合、認証を許可するために設定できるプロパティまたは呼び出すことができる関数はありますか? そのバグがこれらの認証の問題を引き起こしている場合、回避策はありますか?

そして、実際の接続コードはどのようになりますか?

セバスチャン

4

1 に答える 1

3

TIdIMAP4で SASL が壊れている問題は、IdIMAP4.pas の内部PerformSASLLogin_IMAP()関数を介して 10.6.0 ですでに対処されています。当分の間、TIdIMAP4Indy の通常の SASL 実装を使用する代わりに、独自の内部 SASL 実装を使用するようになりました。それは問題ではありません。

IMAPLOGINコマンドは Unicode、ピリオドを許可しません。SASL は Unicode を許可しますが、Indy は現時点で SASL に Unicode のサポートを実装していません。

次の行を変更して、IdIMAP4.pas に手動でパッチを適用してみてください。

// lines 1368 and 1378 in PerformSASLLogin_IMAP()
AClient.IOHandler.WriteLn(AEncoder.Encode(S));

代わりにこれに:

AClient.IOHandler.WriteLn(AEncoder.Encode(S, IndyTextEncoding_UTF8));

ただし、使用されている特定の SASL と、実際に UTF-8 をサポートしているかどうかによって、それが機能する場合と機能しない場合があります。

将来のリリースで SASL の Unicode をサポートするために、Indy の問題トラッカーで新しいチケットを作成しました。

于 2013-07-18T16:21:40.220 に答える