根据验证程序,远程证书无效。 GMAIL

时间:2010-10-19 11:32:24

标签: asp.net gmail

以下功能适用于控制台应用程序,但它在我的asp.net网站中无效。我收到一个错误: 根据验证程序,远程证书无效。

public static void SendEmail(MailMessage mm)
{
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.Port = 587;
    smtp.EnableSsl = true;
    smtp.Credentials = new NetworkCredential("ma@mail.com", "Pass");

    smtp.Send(mm);
}

1 个答案:

答案 0 :(得分:4)

您可以尝试处理证书验证事件,以便更容易确定远程证书被视为无效的原因。为此,在调用SendEmail方法之前添加以下行:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

然后提供ValidateServerCertificate的实现,如

public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    // replace with proper validation
    if (sslPolicyErrors == SslPolicyErrors.None) 
        return true;
    else
        return false;
}

ValidateServerCertificate接收的参数应该为您提供有关验证失败原因的详细信息(请检查sslPolicyErrors)。您还可以访问远程证书和证书颁发机构链。

一种可能的情况是,您使用与控制台应用程序不同的用户运行网站,并且此用户不信任gmail证书的颁发者(或链中的中间机构)。如果您以某种方式从Windows证书存储区中的本地计算机/受信任的根证书中删除了证书,则可能会发生这种情况。