SSL Certificate Validation with POP

GemBox.Email supports secure connections via the POPS (POP Secure) communication. By default, PopClient will try to connect to your email server using a Secure Sockets Layer (SSL)/Transport Layer Security (TLS) encrypted connection.

If successful, it will do basic SSL/TLS certificate validation. For advanced uses, GemBox.Email provides a way to achieve custom client certificate validation by creating a certificate validation delegate and providing it to a client with PopClient Constructor.

The following example shows how to validate a certificate using a custom method delegate.

Screenshot of PopClient's certificate validation
Validating SSL certificate with POP client in C# and VB.NET
using System;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using GemBox.Email;
using GemBox.Email.Pop;
using GemBox.Email.Security;

class Program
{
    static void Main()
    {
        // If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        // Create certificate validation delegate.
        RemoteCertificateValidationCallback validationDelegate =
            (object sender,
             X509Certificate certificate,
             X509Chain chain,
             SslPolicyErrors errors) =>
            {
                if (errors == SslPolicyErrors.None || errors == SslPolicyErrors.RemoteCertificateNameMismatch)
                {
                    Console.WriteLine("Server certificate is valid.");
                    return true;
                }
                else
                {
                    Console.WriteLine($"Server certificate is invalid: {errors}");
                    return false;
                }
            };

        // Create new PopClient and specify host, port, security and certificate validation callback.
        using (PopClient pop = new PopClient(
            "<ADDRESS> (e.g. pop.gmail.com)",
            995,
            ConnectionSecurity.Ssl,
            validationDelegate))
        {
            // Connect to email server.
            pop.Connect();
            Console.WriteLine("Connected.");

            // Authenticate with specified username, password and authentication mechanism.
            pop.Authenticate("<USERNAME>", "<PASSWORD>", PopAuthentication.Plain);
            Console.WriteLine("Authenticated.");
        }
    }
}
Imports System
Imports System.Net.Security
Imports System.Security.Cryptography.X509Certificates
Imports GemBox.Email
Imports GemBox.Email.Pop
Imports GemBox.Email.Security

Module Program

    Sub Main()

        ' If using Professional version, put your serial key below.
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        ' Create certificate validation delegate.
        Dim validationDelegate As RemoteCertificateValidationCallback =
            Function(sender As Object,
                     certificate As X509Certificate,
                     chain As X509Chain,
                     errors As SslPolicyErrors) As Boolean

                If errors = SslPolicyErrors.None OrElse errors = SslPolicyErrors.RemoteCertificateNameMismatch Then
                    Console.WriteLine("Server certificate is valid.")
                    Return True
                Else
                    Console.WriteLine($"Server certificate is invalid: {errors}")
                    Return False
                End If
            End Function

        ' Create new PopClient and specify host, port, security and certificate validation callback.
        Using pop As New PopClient(
            "<ADDRESS> (e.g. pop.gmail.com)",
            995,
            ConnectionSecurity.Ssl,
            validationDelegate)

            ' Connect to email server.
            pop.Connect()
            Console.WriteLine("Connected.")

            ' Authenticate with specified username, password and authentication mechanism.
            pop.Authenticate("<USERNAME>", "<PASSWORD>", PopAuthentication.Plain)
            Console.WriteLine("Authenticated.")
        End Using

    End Sub
End Module

For more information about PopClient, check out our POP Client Connection example.

Check next example or download examples from GitHub.