我正在使用OpenPOP,我正在尝试从办公室中的exchange服务器检索邮件。这是我的代码
popClient.Connect(host.Host, (int)host.Port, (bool)host.Ssl);
popClient.Authenticate(host.Username, host.Password);Prodlem是在iis 7中创建的SSL证书,它不是有效的证书。我有什么方法可以绕过它吗?
根据验证过程,它会显示错误远程证书无效。
发布于 2010-11-18 06:18:05
是的,有一种方法。它需要对POPClient类进行一些小的代码更改。
步骤1:将用于对服务器进行身份验证的SslStream实例的构造函数替换为允许您提供用于验证远程方提供的证书的委托的构造函数。因此请替换
SslStream stream = new SslStream(clientSocket.GetStream(), false); 在POPClient类中,Connect方法使用
SslStream stream = new SslStream(clientSocket.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);第2步:提供委托调用的方法,并通过返回always true强制验证远程证书:
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; // force the validation of any certificate
}有关此主题的更多详细信息,请查看msdn上提供的文档。
发布于 2010-11-19 20:42:54
我是OpenPop上的开发人员之一。我没有想过这有什么用处,但看到这是一个问题,当我有时间的时候,我会把它放到主代码中,而不是在它的其他部分工作。到目前为止,它在我的待办事项清单上。
/Kasper (foens)
https://stackoverflow.com/questions/4204785
复制相似问题