带有IIS SSL证书的OpenPOP.POP3

Jed*_*Jed 3 .net email pop3 .net-3.5

我正在使用OpenPOP我正在尝试从办公室交换服务器中检索邮件.这是我的代码

 popClient.Connect(host.Host, (int)host.Port, (bool)host.Ssl);
 popClient.Authenticate(host.Username, host.Password);
Run Code Online (Sandbox Code Playgroud)

Prodlem是在iis 7中创建的SSL证书,并且不是有效证书,我有什么方法可以绕过它.

它根据验证程序给出了错误远程证书无效的错误.

and*_*i m 6

是的,有一种方法.它需要一些小的代码更改是POPClient类.

步骤1:将用于对服务器进行身份验证的SslStream实例的构造函数替换为允许您提供用于验证远程方提供的证书的委托的构造函数.因此更换

SslStream stream = new SslStream(clientSocket.GetStream(), false); 
Run Code Online (Sandbox Code Playgroud)

来自POPClient类,Connect方法

SslStream stream = new SslStream(clientSocket.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
Run Code Online (Sandbox Code Playgroud)

步骤2:提供委托调用的方法,并通过返回true来强制验证远程证书:

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{         
    return true;  // force the validation of any certificate
}
Run Code Online (Sandbox Code Playgroud)

有关此主题的更多详细信息,请查看msdn上提供的文档.