Ruby Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Ruby
Examples

Quick Start
Unicode
Byte Array
Bz2
Certificates
CSV
Email
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT
MIME
POP3
RSA
S/MIME
Signatures
SFTP
SMTP
Socket / SSL
Spider
SSH
SSH Key
SSH Tunnel
Tar
HTTP Upload
XML
XMP
Zip

More Examples...
String
Amazon S3
Email Object
DKIM / DomainKey
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
DH Key Exchange
DSA
LZW

 

 

 

 

 

 

 

Send DKIM Signed Email

Demonstrates how to create a simple email, add a DKIM signature, and send it.

Note: Requires version 9.0.3 or greater.

Downloads for Windows/Linux and Install Instructions

require 'rubygems'
require 'chilkat'

#  This example uses the Chilkat MIME/DKIM component
#  for adding a DKIM signature, and the Chilkat Email
#  component for creating and sending the email.

#  The mailman object is used for sending and receiving email.
#  The mailman object is part of the Chilkat Email product.
mailman = Chilkat::CkMailMan.new()

#  Any string argument automatically begins the 30-day trial.
success = mailman.UnlockComponent("30-day trial")
if (success != true)
    print mailman.lastErrorText() + "\n"
    exit
end

#  The dkim object is used for creating the DKIM signature.
#  It belongs to the "Chilkat MIME" product.
dkim = Chilkat::CkDkim.new()

success = dkim.UnlockComponent("Anything for 30-day trial")
if (success != true)
    print dkim.lastErrorText() + "\n"
    exit
end

#  Set the SMTP server.
mailman.put_SmtpHost("smtp.chilkatsoft.com")

#  Set the SMTP login/password (if required)
mailman.put_SmtpUsername("myLogin")
mailman.put_SmtpPassword("myPassword")
#  Set the SmtpPort if your SMTP server uses an alternative port (default = 25)
mailman.put_SmtpPort(587)

#  Create a new email object
email = Chilkat::CkEmail.new()

email.put_Subject("This is a test")
email.put_Body("This is a test")
email.put_From("Chilkat Support <support@chilkatsoft.com>")
#  We'll send the email to a Yahoo email account.  It is then
#  possible to view the full headers within the Yahoo email
#  interface to see if the DKIM signature was accepted.
email.AddTo("Chilkat Software","chilkat_software@yahoo.com")
email.AddTo("Chilkat Admin","admin@chilkatsoft.com")

#  When sending an email with a DKIM signature, the MIME
#  of the email must not be modified (in significant ways) prior to
#  or during the sending process.  Therefore, the MIME of the
#  email is assembled, the DKIM signature is added, and then
#  SendMimeBytes is called to send the email.

#  Get the MIME of the email.  Calling RenderToMimeBytes
#  causes the email to be signed and/or encrypted if those options
#  have been selected.  The MIME returned by RenderToMimeBytes
#  is the exact MIME that would've been sent if SendEmail was
#  called.  We'll add a DKIM signature header to this MIME and then send...
mimeData = Chilkat::CkByteData.new()
success = mailman.RenderToMimeBytes(email,mimeData)
if (success != true)
    print mailman.lastErrorText() + "\n"
    exit
end

#  To create a DKIM signature for email (i.e. MIME),
#  you'll need to provide the following:
#  (1) An RSA private key in any common file format.
#  (2) The domain name (typically the same domain
#  as the sender of an email).
#  (3) A selector for the domain name -- an arbitrary string
#  to identify the matching public key in DNS.

#  To allow an email recipient to verify the DKIM signature via an
#  external email client supporting DKIM or using other software,
#  you will need to create a DNS record with the selector
#  and matching public key.  This example does not provide
#  information about DKIM DNS record creation.
#  (Chilkat does not provide an API for creating DNS records.
#  Creating the DKIM DNS record is something you would do
#  manually.)

#  Set the domain and selector:
#  You'll need to provide your own values here..
dkim.put_DkimDomain("chilkatsoft.com")
dkim.put_DkimSelector("brisbane")

#  Load a private key from any common RSA private key
#  format, such as DER, PKCS8, PEM, XML, etc.
#  The LoadDkimPkFile method automatically detects
#  the file format and reads it appropriately.
#  If a password is not required, you'll still need to provide
#  a password string argument, but it is ignored.

password = "optionalPassword"
success = dkim.LoadDkimPkFile("myPrivateKey.pem",password)
if (success != true)
    print dkim.lastErrorText() + "\n"
    exit
end

#  Add the DKIM-Signature header and
#  returns the new MIME with DKIM-Signature added.
dkimSignedMime = Chilkat::CkByteData.new()

success = dkim.AddDkimSignature(mimeData,dkimSignedMime)
if (success != true)
    print dkim.lastErrorText() + "\n"
    exit
end

#  Call SendMimeBytes to connect to the SMTP server and send.
#  The connection (i.e. session) to the SMTP server remains
#  open so that subsequent Send* calls may use the
#  same connection.
strFrom = "support@chilkatsoft.com"
#  To send to multiple email addresses, the strTo should be set to a comma-separated
#  list of email addresses.
strTo = "chilkat_software@yahoo.com, admin@chilkatsoft.com"
success = mailman.SendMimeBytes(strFrom,strTo,dkimSignedMime)
if (success != true)
    print mailman.lastErrorText() + "\n"
    exit
end

#  Some SMTP servers do not actually send the email until
#  the connection is closed.  In these cases, it is necessary to
#  call CloseSmtpConnection for the mail to be  sent.
#  Most SMTP servers send the email immediately, and it is
#  not required to close the connection.  We'll close it here
#  for the example:
success = mailman.CloseSmtpConnection()
if (success != true)
    print "Connection to SMTP server not closed cleanly." + "\n"
end

print "DKIM Signed Mail Sent!" + "\n"
 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.