Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) IMAP Download and Verify Signed MIMEDownloads the unmodified MIME of a digitally signed email, saves the .p7s signature (and other MIME parts), then loads the email into a Chilkat email object (which unwraps the S/MIME and verifies the signature) and then saves attachments (if the MIME parts were not already saved).
Use ChilkatAx-win32.pkg Procedure Test Handle hoImap Boolean iSuccess Variant vSbMime Handle hoSbMime Handle hoMime Boolean iAlreadySavedParts Variant vSa Handle hoSa Integer iNumFiles Integer i Handle hoEmail Variant vCert Handle hoCert String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatImap)) To hoImap If (Not(IsComObjectCreated(hoImap))) Begin Send CreateComObject of hoImap End // Connect to an IMAP server. // Use TLS Set ComSsl Of hoImap To True Set ComPort Of hoImap To 993 Get ComConnect Of hoImap "imap.someMailServer.com" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End Get ComLogin Of hoImap "myLogin" "myPassword" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Select an IMAP mailbox Get ComSelectMailbox Of hoImap "Inbox" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Download the 1st email (as MIME) in the Inbox by sequence number. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMime If (Not(IsComObjectCreated(hoSbMime))) Begin Send CreateComObject of hoSbMime End Get pvComObject of hoSbMime to vSbMime Get ComFetchSingleAsMimeSb Of hoImap 1 False vSbMime To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoImap To sTemp1 Showln sTemp1 Procedure_Return End // Load it into a MIME object and check to see if it is signed Get Create (RefClass(cComChilkatMime)) To hoMime If (Not(IsComObjectCreated(hoMime))) Begin Send CreateComObject of hoMime End Get pvComObject of hoSbMime to vSbMime Get ComLoadMimeSb Of hoMime vSbMime To iSuccess Move False To iAlreadySavedParts Get ComContainsSignedParts Of hoMime To bTemp1 If (bTemp1 = True) Begin // This will save the .p7s and other parts... Get ComExtractPartsToFiles Of hoMime "qa_output" To vSa If (IsComObject(vSa)) Begin Get Create (RefClass(cComCkStringArray)) To hoSa Set pvComObject Of hoSa To vSa End Get ComLastMethodSuccess Of hoMime To bTemp1 If (bTemp1 = True) Begin Get ComCount Of hoSa To iNumFiles Move 0 To i While (i < iNumFiles) Get ComGetString Of hoSa i To sTemp1 Showln "Created: " sTemp1 Move (i + 1) To i Loop Send Destroy of hoSa Move True To iAlreadySavedParts End End // Load the MIME into an Email object. This unwraps the security layers and verifies signatures. Get Create (RefClass(cComChilkatEmail)) To hoEmail If (Not(IsComObjectCreated(hoEmail))) Begin Send CreateComObject of hoEmail End Get pvComObject of hoSbMime to vSbMime Get ComSetFromMimeSb Of hoEmail vSbMime To iSuccess 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 // The certificate used for signing may be obtained // by calling email.GetSignedByCert. Get ComGetSignedByCert Of hoEmail To vCert If (IsComObject(vCert)) Begin Get Create (RefClass(cComChilkatCert)) To hoCert Set pvComObject Of hoCert To vCert End Get ComLastMethodSuccess Of hoEmail To bTemp1 If (bTemp1 <> True) Begin Showln "Failed to get signing certificate object." End Else Begin Get ComSubjectCN Of hoCert To sTemp1 Showln "Signing cert: " sTemp1 Send Destroy of hoCert End End End Else Begin Showln "Digital signature verification failed." End If (iAlreadySavedParts <> True) Begin Get ComSaveAllAttachments Of hoEmail "qa_output" To iSuccess End End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.