Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3/4 Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Tcl) Using Client Certificate w/ IMAP SSLDemonstrates how to use a client-side certificate with an IMAP SSL connection. The SetSslClientCert method is called to specify a certificate to be used for the SSL connection.
load ./chilkat.dll set imap [new_CkImap] # Anything unlocks the component and begins a fully-functional 30-day trial. set success [CkImap_UnlockComponent $imap "Anything for 30-day trial"] if {[expr $success != 1]} then { puts [CkImap_lastErrorText $imap] delete_CkImap $imap exit } # To use a secure SSL connection, set SSL and the port: CkImap_put_Ssl $imap 1 # The typical port for IMAP SSL is 993 CkImap_put_Port $imap 993 # Load a certificate from a PFX file and use it. # Note: Other methods are available to load pre-installed # certificates from registry-based certificate stores. # Create an instance of a certificate store object, load a PFX file, # locate the certificate we need, and use it for signing. # (a PFX file may contain more than one certificate.) set certStore [new_CkCertStore] # The 1st argument is the filename, the 2nd arg is the # PFX file's password: set success [CkCertStore_LoadPfxFile $certStore "myCertWithPrivateKey.pfx" "secret"] if {[expr $success != 1]} then { puts [CkCertStore_lastErrorText $certStore] delete_CkImap $imap delete_CkCertStore $certStore exit } # Find the certificate by the subject common name: # cert is a CkCert set cert [CkCertStore_FindCertBySubjectCN $certStore "Chilkat Software, Inc."] if {[string equal $cert "NULL"]} then { puts [CkCertStore_lastErrorText $certStore] delete_CkImap $imap delete_CkCertStore $certStore exit } # If a PFX file is known to contain a single certificate, # you may load it directly into a Chilkat certificate object. # This snippet of source code shows how: set cert2 [new_CkCert] # The 1st argument is the filename, the 2nd arg is the # PFX file's password: set success [CkCert_LoadPfxFile $cert2 "myClientCert.pfx" "secret"] if {[expr $success != 1]} then { puts [CkCert_lastErrorText $cert] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # Use the cert: set success [CkImap_SetSslClientCert $imap $cert] # Connect to an IMAP server. set success [CkImap_Connect $imap "imap.someMailServer.com"] if {[expr $success != 1]} then { puts [CkImap_lastErrorText $imap] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # Login set success [CkImap_Login $imap "myLogin" "myPassword"] if {[expr $success != 1]} then { puts [CkImap_lastErrorText $imap] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # Select an IMAP mailbox set success [CkImap_SelectMailbox $imap "Inbox"] if {[expr $success != 1]} then { puts [CkImap_lastErrorText $imap] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # messageSet is a CkMessageSet # We can choose to fetch UIDs or sequence numbers. set fetchUids 1 # Get the message IDs of all the emails in the mailbox set messageSet [CkImap_Search $imap "ALL" $fetchUids] if {[string equal $messageSet "NULL"]} then { puts [CkImap_lastErrorText $imap] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # Fetch the emails into a bundle object: # bundle is a CkEmailBundle set bundle [CkImap_FetchBundle $imap $messageSet] if {[string equal $bundle "NULL"]} then { delete_CkMessageSet $messageSet puts [CkImap_lastErrorText $imap] delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 exit } # Loop over the bundle and display the FROM and SUBJECT of each. for {set i 0} {$i <= [expr [CkEmailBundle_get_MessageCount $bundle] - 1]} {incr i} { # email is a CkEmail set email [CkEmailBundle_GetEmail $bundle $i] puts [CkEmail_from $email] puts [CkEmail_subject $email] puts "--" delete_CkEmail $email } # Disconnect from the IMAP server. set success [CkImap_Disconnect $imap] delete_CkMessageSet $messageSet delete_CkEmailBundle $bundle delete_CkImap $imap delete_CkCertStore $certStore delete_CkCert $cert2 |
© 2000-2016 Chilkat Software, Inc. All Rights Reserved.