Sample code for 30+ languages & platforms
PowerShell

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()