我正在使用OpenPOP 我正在尝试从办公室交换服务器检索邮件。这是我的代码
popClient.Connect(host.Host, (int)host.Port, (bool)host.Ssl);
popClient.Authenticate(host.Username, host.Password);
Prodlem是在iis 7中创建的SSL证书,并且不是有效证书,我有办法绕过它。
根据验证程序,它给出了错误远程证书无效。
答案 0 :(得分:6)
是的,有办法。它需要一些小的代码更改是POPClient类。
步骤1 :将用于对服务器进行身份验证的SslStream实例的构造函数替换为允许您提供用于验证远程方提供的证书的委托的构造函数。因此,替换
SslStream stream = new SslStream(clientSocket.GetStream(), false);
来自POPClient类,使用
连接方法SslStream stream = new SslStream(clientSocket.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
第2步:提供委托调用的方法,并通过返回true来强制验证远程证书:
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; // force the validation of any certificate
}
有关此主题的更多详细信息,请查看msdn上提供的文档。
答案 1 :(得分:2)
我是OpenPop的开发人员之一。我没有考虑过这方面的用途,但看到这是一个问题,我会把它放到主代码中,当我有时间并且没有处理它的其他部分时。截至目前,它已列入我的TODO名单。
/ Kasper(foens)