DataFlex
DataFlex
POP3 Verify Signed (S/MIME) Email
Demonstrates how to download and verify digitally signed S/MIME email.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoMailman
Variant vStUidls
Handle hoStUidls
Variant vEmail
Handle hoEmail
Variant vCert
Handle hoCert
Integer iCount
Integer i
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatMailMan)) To hoMailman
If (Not(IsComObjectCreated(hoMailman))) Begin
Send CreateComObject of hoMailman
End
// Set the POP3 server's hostname
Set ComMailHost Of hoMailman To "pop.example.com"
// Set the POP3 login/password.
Set ComPopUsername Of hoMailman To "myLogin"
Set ComPopPassword Of hoMailman To "myPassword"
Get Create (RefClass(cComChilkatStringTable)) To hoStUidls
If (Not(IsComObjectCreated(hoStUidls))) Begin
Send CreateComObject of hoStUidls
End
Get pvComObject of hoStUidls to vStUidls
Get ComFetchUidls Of hoMailman vStUidls To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatEmail)) To hoEmail
If (Not(IsComObjectCreated(hoEmail))) Begin
Send CreateComObject of hoEmail
End
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Get ComCount Of hoStUidls To iCount
Move 0 To i
While (i < iCount)
// Download the full email.
Get ComStringAt Of hoStUidls i To sTemp1
Get pvComObject of hoEmail to vEmail
Get ComFetchByUidl Of hoMailman sTemp1 False 0 vEmail To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoMailman To sTemp1
Showln sTemp1
Procedure_Return
End
Showln i
Get ComFrom Of hoEmail To sTemp1
Showln "From: " sTemp1
Get ComSubject Of hoEmail To sTemp1
Showln "Subject: " sTemp1
// 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:
Get ComReceivedSigned Of hoEmail To bTemp1
If (bTemp1 = True) Begin
Showln "This email was signed."
// Check to see if the signatures were verified.
Get ComSignaturesValid Of hoEmail To bTemp1
If (bTemp1 = True) Begin
Showln "Digital signature(s) verified."
Get ComSignedBy Of hoEmail To sTemp1
Showln "Signer: " sTemp1
Get pvComObject of hoCert to vCert
Get ComLastSignerCert Of hoEmail 0 vCert To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoEmail To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComSubjectCN Of hoCert To sTemp1
Showln "Signing cert: " sTemp1
End
End
Else Begin
Showln "Digital signature verification failed."
End
Move (i + 1) To i
Loop
Get ComPop3EndSession Of hoMailman To iSuccess
End_Procedure