Sample code for 30+ languages & platforms
PowerShell Requires Chilkat v11.0.0+

POP3 Verify Signed (S/MIME) Email

Demonstrates how to download and verify digitally signed S/MIME email.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

#  This example requires the Chilkat API to have been previously unlocked.
#  See Global Unlock Sample for sample code.

$mailman = New-Object Chilkat.MailMan

#  Set the POP3 server's hostname
$mailman.MailHost = "pop.example.com"

#  Set the POP3 login/password.
$mailman.PopUsername = "myLogin"
$mailman.PopPassword = "myPassword"

$stUidls = New-Object Chilkat.StringTable
$success = $mailman.FetchUidls($stUidls)
if ($success -eq $false) {
    $($mailman.LastErrorText)
    exit
}

$email = New-Object Chilkat.Email
$cert = New-Object Chilkat.Cert

$count = $stUidls.Count
$i = 0
while ($i -lt $count) {
    #  Download the full email.
    $success = $mailman.FetchByUidl($stUidls.StringAt($i),$false,0,$email)
    if ($success -eq $false) {
        $($mailman.LastErrorText)
        exit
    }

    $($i)
    $("From: " + $email.From)
    $("Subject: " + $email.Subject)

    #  The security layers of signed and/or encrypted emails
    #  are automatically "unwrapped" when loaded into
    #  a Chilkat email object.
    #  An application only needs to check to see if an email
    #  was received signed or encrypted, and then examine
    #  the success/failure.  For example:
    if ($email.ReceivedSigned -eq $true) {

        $("This email was signed.")

        #  Check to see if the signatures were verified.
        if ($email.SignaturesValid -eq $true) {
            $("Digital signature(s) verified.")
            $("Signer: " + $email.SignedBy)

            $success = $email.LastSignerCert(0,$cert)
            if ($success -eq $false) {
                $($email.LastErrorText)
                exit
            }

            $("Signing cert: " + $cert.SubjectCN)
        }

    }
    else {
        $("Digital signature verification failed.")
    }

    $i = $i + 1
}

$mailman.Pop3EndSession()