CkPython
CkPython
IMAP Download and Verify Signed (S/MIME) Email
See more IMAP Examples
Demonstrates how to download and verify digitally signed S/MIME email.Chilkat CkPython Downloads
import sys
import chilkat
success = False
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
imap = chilkat.CkImap()
# Connect to an IMAP server.
# Use TLS
imap.put_Ssl(True)
imap.put_Port(993)
success = imap.Connect("imap.example.com")
if (success == False):
print(imap.lastErrorText())
sys.exit()
success = imap.Login("myLogin","myPassword")
if (success == False):
print(imap.lastErrorText())
sys.exit()
# Select an IMAP mailbox
success = imap.SelectMailbox("Inbox")
if (success == False):
print(imap.lastErrorText())
sys.exit()
# We can choose to fetch UIDs or sequence numbers.
fetchUids = True
# Get the message IDs of all the emails in the mailbox
messageSet = chilkat.CkMessageSet()
success = imap.QueryMbx("ALL",fetchUids,messageSet)
if (success == False):
print(imap.lastErrorText())
sys.exit()
email = chilkat.CkEmail()
cert = chilkat.CkCert()
i = 0
while i < messageSet.get_Count() :
uid = messageSet.GetId(i)
print("uid: " + uid)
success = imap.FetchEmail(False,uid,True,email)
if (success == False):
print(imap.lastErrorText())
sys.exit()
# 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.")
# Check to see if the signatures were verified.
if (email.get_SignaturesValid() == True):
print("Digital signature(s) verified.")
print("Signer: " + email.signedBy())
# Get the certificate used for signing.
success = email.LastSignerCert(0,cert)
if (success == False):
print("Failed to get signing certificate object.")
else:
print("Signing cert: " + cert.subjectCN())
else:
print("Digital signature verification failed.")
i = i + 1
# Disconnect from the IMAP server.
success = imap.Disconnect()