如何使 TIdIMAP4 支持 socks 4/5 代理?

How to make TIdIMAP4 support socks 4/5 proxy?

Indy 包的 TidIMAP4 客户端不支持 socks 4/5 代理,添加该支持的可能方法是什么?

Indy 已经有一个内置框架,用于通过代理连接任何 TCP 客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到哪里。如果需要通过多个代理连接,代理组件可以链接起来。

Indy 10 默认提供两个代理组件 - TIdSocksInfo 用于 SOCKS 4/4a/5 代理,TIdConnectThroughHttpProxy 用于 HTTP 代理(使用 HTTP CONNECT 方法)。但该框架足够通用,如果您需要实现其他代理协议,您可以派生新的类。

在您的情况下,在连接到服务器之前,将 TIdIOHandlerStack 组件分配给 TIdIMAP4.IOHandler 属性,然后将 TIdSocksInfo 组件分配给 [=16] =] 属性,然后根据需要配置 TIdSocksInfo。所有这些都可以在设计时或 运行 时完成。