Go 如何通过socks连接到imap?去

Go 如何通过socks连接到imap?去,go,socks,Go,Socks,我正在尝试通过网络连接到IMAP服务器。为此,我从软件包中导出了一些函数,但我在socks5拨号器设置中遇到了问题(第一步:)。 我想原因是我将nil作为转发(类型拨号)参数传递。forward参数应该是什么?未记录(在godoc中) forward是用于连接到代理服务器的拨号程序 如果您愿意,您可以在这里使用proxy.Direct(如果您查看源代码,这是包中的默认设置),但所做的只是将任务委托给net.Dial(network,addr)。如果您需要更多选项,请插入您自己的拨号器 func

我正在尝试通过网络连接到IMAP服务器。为此,我从软件包中导出了一些函数,但我在socks5拨号器设置中遇到了问题(第一步:)。 我想原因是我将
nil
作为
转发
(类型
拨号
)参数传递。
forward
参数应该是什么?未记录(在godoc中)


forward
是用于连接到代理服务器的
拨号程序

如果您愿意,您可以在这里使用
proxy.Direct
(如果您查看源代码,这是包中的默认设置),但所做的只是将任务委托给
net.Dial(network,addr)
。如果您需要更多选项,请插入您自己的拨号器

func dialSocks(socks string) (Dial proxy.Dialer, err error) {
    Dial, err = proxy.SOCKS5("tcp", socks, nil, nil)
    return
}

func dialTLS(addr string, config *tls.Config) (c *imap.Client, err error) {
    addr = defaultPort(addr, "993")
    d, err := dialSocks("101.120.113.185:1328")
    if err != nil {
        log.Error(err)
        return
    }
    conn, err := d.Dial("tcp", addr)
    if err == nil {
        host, _, _ := net.SplitHostPort(addr)
        tlsConn := tls.Client(conn, setServerName(config, host))
        if c, err = imap.NewClient(tlsConn, host, 60*time.Second); err != nil {
            conn.Close()
        }
    }
    return
}

func defaultPort(addr, port string) string {
    _, _, err := net.SplitHostPort(addr)
    if err != nil {
        addr = net.JoinHostPort(addr, port)
    }
    return addr
}