我是使用OpenPOP进行邮件收发的。 我正在尝试从办公室内部的Exchange服务器中检索邮件。以下是我的代码:
popClient.Connect(host.Host, (int)host.Port, (bool)host.Ssl);
popClient.Authenticate(host.Username, host.Password);
问题是SSL证书在iis 7中创建,但不是有效的证书,有没有办法让我绕过这个问题。
它给我错误提示:远程证书根据验证程序无效。
是的,有一种方法。这需要对POPClient类进行一些小的代码更改。
步骤1:用允许您提供验证远程方提供的证书的委托的构造函数替换用于验证服务器的SslStream实例的构造函数。因此,替换:
SslStream stream = new SslStream(clientSocket.GetStream(), false);
从POPClient类中,使用Connect方法连接服务器:
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上可用的文档。
我是OpenPop的开发者之一。我之前没有想到过这个用途,但看到这是一个问题后,我会在有时间而不是在处理其他部分时将其放入主代码中。目前它已经在我的待办事项列表中。
/Kasper (foens)