Perl Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CUnicode C++Unicode CMFCDelphi DLLDelphi ActiveXFoxProJavaPerlPHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Perl Examples

Quick Start
Unicode
Byte Array
Bz2
Certificates
CSV
Email
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT
MIME
POP3
RSA
S/MIME
Signatures
SMTP
Socket / SSL
Spider
SFTP
SSH Key
SSH
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
DH Key Exchange
DSA
Bzip2
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.

 Chilkat Perl Module Downloads for Windows, Linux, and MAC OS X

use 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 = new chilkat::CkMailMan();

#  Any string argument automatically begins the 30-day trial.
$success = $mailman->UnlockComponent("30-day trial");
if ($success != 1) {
    print $mailman->lastErrorText() . "\n";
    exit;
}

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

$success = $dkim->UnlockComponent("Anything for 30-day trial");
if ($success != 1) {
    print $dkim->lastErrorText() . "\n";
    exit;
}

#  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 = new chilkat::CkEmail();

$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 = new chilkat::CkByteData();
$success = $mailman->RenderToMimeBytes($email,$mimeData);
if ($success != 1) {
    print $mailman->lastErrorText() . "\n";
    exit;
}

#  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 != 1) {
    print $dkim->lastErrorText() . "\n";
    exit;
}

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

$success = $dkim->AddDkimSignature($mimeData,$dkimSignedMime);
if ($success != 1) {
    print $dkim->lastErrorText() . "\n";
    exit;
}

#  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 != 1) {
    print $mailman->lastErrorText() . "\n";
    exit;
}

#  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 != 1) {
    print "Connection to SMTP server not closed cleanly." . "\n";
}

print "DKIM Signed Mail Sent!" . "\n";
 

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