Lua Requires Chilkat v11.0.0+
Lua
Using Client Certificate w/ IMAP SSL
Demonstrates 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.Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
local imap = chilkat.Imap.new()
-- To use a secure SSL connection, set SSL and the port:
imap.ssl = true
-- The typical port for IMAP SSL is 993
imap.port = 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.)
local certStore = chilkat.CertStore.new()
-- The 1st argument is the filename, the 2nd arg is the
-- PFX file's password:
local success = certStore:load_pfx_file("myCertWithPrivateKey.pfx", "secret")
if not success then
print(certStore.last_error_text)
return
end
-- Find the certificate by the subject common name:
local jsonCN = chilkat.JsonObject.new()
jsonCN:update_string("CN", "cert common name")
local cert = chilkat.Cert.new()
success = certStore:find_cert(jsonCN, cert)
if not success then
print(certStore.last_error_text)
return
end
-- 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:
local cert2 = chilkat.Cert.new()
-- The 1st argument is the filename, the 2nd arg is the
-- PFX file's password:
success = cert2:load_pfx_file("myClientCert.pfx", "secret")
if not success then
print(cert.last_error_text)
return
end
-- Use the cert:
success = imap:set_ssl_client_cert(cert)
-- Connect to an IMAP server.
success = imap:connect("imap.example.com")
if not success then
print(imap.last_error_text)
return
end
-- Login
success = imap:login("myLogin", "myPassword")
if not success then
print(imap.last_error_text)
return
end
-- Select an IMAP mailbox
success = imap:select_mailbox("Inbox")
if not success then
print(imap.last_error_text)
return
end
-- Get the message IDs of all the emails in the mailbox
local fetchUids = true
local messageSet = chilkat.MessageSet.new()
success = imap:query_mbx("ALL", fetchUids, messageSet)
if not success then
print(imap.last_error_text)
return
end
-- Fetch the emails into a bundle object:
local bundle = chilkat.EmailBundle.new()
local headersOnly = false
success = imap:fetch_msg_set(headersOnly, messageSet, bundle)
if not success then
print(imap.last_error_text)
return
end
-- Loop over the bundle and display the FROM and SUBJECT of each.
local email = chilkat.Email.new()
local i = 0
local numEmails = bundle.message_count
while i < numEmails do
bundle:email_at(i, email)
print(email.from)
print(email.subject)
print("--")
i = i + 1
end
-- Disconnect from the IMAP server.
success = imap:disconnect()