2013-07-18 102 views
0

我使用Indy TIdIMAP4組件(版本10.6.0)連接到Exchange服務器。 當密碼中只有簡單字符爲IMAP4rev1 doesn't seem to allow anything else than US-ASCII時,此工作正常。雖然如果密碼包含特殊字符如德語變音符,空格等,則通過IMAPConnection.Connect進行的認證失敗,即它會拋出一個異常說「登錄失敗」。Indy IMAP不允許使用特殊字符作爲密碼

我認爲這是由bug in the TIdIMAP4 component regarding SASL引起的,雖然我不確定。

如果該錯誤不相關,是否有可以設置的屬性或可以調用以允許進行身份驗證的函數? 如果該錯誤導致了這些身份驗證問題,是否有解決方法?

然後實際的連接代碼將如何?

塞巴斯蒂安

回答

3

SASL is broken in TIdIMAP4問題已經在10.6.0解決,通過在IdIMAP4.pas內部PerformSASLLogin_IMAP()功能。目前,TIdIMAP4現在使用其自己的內部SASL實現,而不是使用Indy的正常SASL實現。所以這不是問題。

IMAP LOGIN命令不允許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或者不支持。

我在Indy的問題跟蹤器中打開了一張新票,以便在將來的版本中支持SASL中的Unicode。

+0

不幸的是,更改行不適用於我。所以我希望你能儘快實現[對SASL的Unicode支持](http://indy.codeplex.com/workitem/24525)。感謝您的回答和問題報告。 –

相關問題