因此,我将TcpClient连接请求发送到mail.mysupplyworld.com:993,并且连接正常,然后我获得了TcpClients NetworkStream并将其包装到SslStream。
一切正常,除非我尝试对它进行SslStream.AuthenticateAsClient。 它立即响应:身份验证失败,因为远程方已关闭传输流。
从这里的其他答案看来,所使用的SSL协议似乎是一个问题,但是在我的代码中,我使用4.7.1中可用的所有协议来实现它,但它仍然存在
例如,我使用:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.SystemDefault;
以及AuthenticateAsClient:
((SslStream)_tcpClientNetworkStream).AuthenticateAsClient(hostname, new X509CertificateCollection(), SslProtocols.Ssl2 | SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, false);
但是它仍然失败。 你们中的任何人都可以使用我上面使用的设置连接到它吗?
代码示例(运行此示例,它应该返回相同的错误):
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.SystemDefault;
((SslStream)new TcpClient("mail.mysupplyworld.com", 993).GetStream()).AuthenticateAsClient("mail.mysupplyworld.com", new X509CertificateCollection(), SslProtocols.Ssl2 | SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, false)
这将返回AuthenticateAsClient错误。 请注意,该代码块同样适用于其他IMAP邮件服务器