Sample code for 30+ languages & platforms
PowerBuilder

POP3 Verify Signed (S/MIME) Email

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

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Mailman
oleobject loo_StUidls
oleobject loo_Email
oleobject loo_Cert
integer li_Count
integer i

li_Success = 0

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

loo_Mailman = create oleobject
li_rc = loo_Mailman.ConnectToNewObject("Chilkat.MailMan")
if li_rc < 0 then
    destroy loo_Mailman
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Set the POP3 server's hostname
loo_Mailman.MailHost = "pop.example.com"

// Set the POP3 login/password.
loo_Mailman.PopUsername = "myLogin"
loo_Mailman.PopPassword = "myPassword"

loo_StUidls = create oleobject
li_rc = loo_StUidls.ConnectToNewObject("Chilkat.StringTable")

li_Success = loo_Mailman.FetchUidls(loo_StUidls)
if li_Success = 0 then
    Write-Debug loo_Mailman.LastErrorText
    destroy loo_Mailman
    destroy loo_StUidls
    return
end if

loo_Email = create oleobject
li_rc = loo_Email.ConnectToNewObject("Chilkat.Email")

loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")

li_Count = loo_StUidls.Count
i = 0
do while i < li_Count
    // Download the full email.
    li_Success = loo_Mailman.FetchByUidl(loo_StUidls.StringAt(i),0,0,loo_Email)
    if li_Success = 0 then
        Write-Debug loo_Mailman.LastErrorText
        destroy loo_Mailman
        destroy loo_StUidls
        destroy loo_Email
        destroy loo_Cert
        return
    end if

    Write-Debug string(i)
    Write-Debug "From: " + loo_Email.From
    Write-Debug "Subject: " + loo_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 loo_Email.ReceivedSigned = 1 then

        Write-Debug "This email was signed."

        // Check to see if the signatures were verified.
        if loo_Email.SignaturesValid = 1 then
            Write-Debug "Digital signature(s) verified."
            Write-Debug "Signer: " + loo_Email.SignedBy

            li_Success = loo_Email.LastSignerCert(0,loo_Cert)
            if li_Success = 0 then
                Write-Debug loo_Email.LastErrorText
                destroy loo_Mailman
                destroy loo_StUidls
                destroy loo_Email
                destroy loo_Cert
                return
            end if

            Write-Debug "Signing cert: " + loo_Cert.SubjectCN
        end if

    else
        Write-Debug "Digital signature verification failed."
    end if

    i = i + 1
loop

loo_Mailman.Pop3EndSession()


destroy loo_Mailman
destroy loo_StUidls
destroy loo_Email
destroy loo_Cert