Sample code for 30+ languages & platforms
Ruby

POP3 Verify Signed (S/MIME) Email

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

Chilkat Ruby Downloads

Ruby
require 'chilkat'

success = false

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

mailman = Chilkat::CkMailMan.new()

# Set the POP3 server's hostname
mailman.put_MailHost("pop.example.com")

# Set the POP3 login/password.
mailman.put_PopUsername("myLogin")
mailman.put_PopPassword("myPassword")

stUidls = Chilkat::CkStringTable.new()
success = mailman.FetchUidls(stUidls)
if (success == false)
    print mailman.lastErrorText() + "\n";
    exit
end

email = Chilkat::CkEmail.new()
cert = Chilkat::CkCert.new()

count = stUidls.get_Count()
i = 0
while i < count
    # Download the full email.
    success = mailman.FetchByUidl(stUidls.stringAt(i),false,0,email)
    if (success == false)
        print mailman.lastErrorText() + "\n";
        exit
    end

    print i.to_s() + "\n";
    print "From: " + email.ck_from() + "\n";
    print "Subject: " + email.subject() + "\n";

    # 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.get_ReceivedSigned() == true)

        print "This email was signed." + "\n";

        # Check to see if the signatures were verified.
        if (email.get_SignaturesValid() == true)
            print "Digital signature(s) verified." + "\n";
            print "Signer: " + email.signedBy() + "\n";

            success = email.LastSignerCert(0,cert)
            if (success == false)
                print email.lastErrorText() + "\n";
                exit
            end

            print "Signing cert: " + cert.subjectCN() + "\n";
        end

    else
        print "Digital signature verification failed." + "\n";
    end

    i = i + 1
end

mailman.Pop3EndSession()