Sample code for 30+ languages & platforms
AutoIt

Send Signed Email using PFX File

Demonstrates how to send a signed email using a digital certificate w/ private key stored in a PFX file.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

; The mailman object is used for sending and receiving email.
$oMailman = ObjCreate("Chilkat.MailMan")

; Set the SMTP server.
$oMailman.SmtpHost = "smtp.mymailserver.com"

; Create a new email object
$oEmail = ObjCreate("Chilkat.Email")

$oEmail.Subject = "This email is signed"
$oEmail.Body = "This is a digitally signed mail"
$oEmail.From = "Chilkat Admin <admin@chilkatsoft.com>"
$bSuccess = $oEmail.AddTo("Chilkat Support","support@chilkatsoft.com")

; Indicate that the email should be sent signed.
$oEmail.SendSigned = True

; Tell the mailman to use a PFX file as a source for locating
; the certificate and private key required for signing.
; The certificate chosen for signing will be the one that
; matches the sender's email address, which also has
; a private key.  All intermediate certs in the chain of 
; authentication, up to and including the root, will
; be included in the signature.
$bSuccess = $oMailman.AddPfxSourceFile("/pfx_files/chilkatsoft_secret.pfx","secret")
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    Exit
EndIf

; Signed email can be sent in two different ways.  
; In a multipart/signed email, the signature is attached as a separate MIME part.
; In an opaque email (signedData) the content of the email is encapsulated within the signature
; and the email is sent as "application/pkcs7-mime". 
; Either should be fine, but some receiving systems might require one or the other..
$oMailman.OpaqueSigning = False

; Send a signed email.
$bSuccess = $oMailman.SendEmail($oEmail)
If ($bSuccess <> True) Then
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
Else
    ; The LastErrorText property provides information
    ; even when successful.
    ConsoleWrite($oMailman.LastErrorText & @CRLF)
    ConsoleWrite("Mail Sent!" & @CRLF)
EndIf