为 Indy IMAP 客户端添加 SOCKS,而不替换其 TLS 处理器
在 Connect 之前把 TIdSocksInfo 设置到现有 IOHandler 的 TransparentProxy 上,让邮件服务器仍作为目标。
对于 Indy 10 IMAPClient,若其现有 IOHandler 派生自 TIdIOHandlerStack,则在调用 Connect 之前挂上 SOCKS 信息:
ProxyInfo := TIdSocksInfo.Create(IMAPClient);
ProxyInfo.Version := svSocks5;
ProxyInfo.Host := 'proxy.example';
ProxyInfo.Port := 1080;
(IMAPClient.IOHandler as TIdIOHandlerStack).TransparentProxy := ProxyInfo;这些类型来自 IdSocks 与 IdIOHandlerStack。如果还没有 IOHandler,请先创建并指定适合邮件连接的处理器。
保留已配置好的 SSL IOHandler。用普通 stack 处理器替换它可能会去掉 TLS;TransparentProxy 只提供代理协商,不提供 993 上的隐式 TLS 或 143 上的 STARTTLS。
该片段假定 SOCKS5 无需认证。对于公共邮件服务器,SOCKS5 代理列表 提供候选;请确认所选端点允许所需的 IMAP 主机与端口。对于代理账号,请把 TIdSocksInfo 的认证、用户名和密码与 IMAP 账号分开配置。
ProxyInfo.Host 指明中间节点。IMAPClient.Host 仍是邮件服务,保留其预期的 TLS 身份和证书校验策略。