Programming Examples

ChilkatHOMEASPVisual BasicVB.NETC#CC++MFCDelphiFoxProJavaPerlPythonRubySQL ServerVBScript

PHP ActiveX Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3


 

 

 

 

 

 

 

 

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 (or v7.9.5 or greater of the Email ActiveX).

Download Chilkat Email ActiveX

Download 32-bit Chilkat IMAP ActiveX (.msi)

Download All 32-bit Chilkat ActiveX Components (.zip)

Download All 64-bit Chilkat ActiveX Components (.zip)

Download Chilkat MIME ActiveX

<?php

//  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 COM("Chilkat.MailMan2");

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

//  The dkim object is used for creating the DKIM signature.
//  It belongs to the "Chilkat MIME" product.
$dkim = new COM("Chilkat.Dkim");

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

//  Set the SMTP server.
$mailman->SmtpHost = 'smtp.chilkatsoft.com';

//  Set the SMTP login/password (if required)
$mailman->SmtpUsername = 'myUsername';
$mailman->SmtpPassword = 'myPassword';
//  Set the SmtpPort if your SMTP server uses an alternative port (default = 25)
$mailman->SmtpPort = 587;

//  Create a new email object
$email = new COM("Chilkat.Email2");

$email->Subject = 'This is a test';
$email->Body = 'This is a test';
$email->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 = $mailman->RenderToMimeBytes($email);

//  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->DkimDomain = 'chilkatsoft.com';
$dkim->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;
}

//  Add the DKIM-Signature header and
//  returns the new MIME with DKIM-Signature added.

$dkimSignedMime = $dkim->AddDkimSignature($mimeData);

//  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;
}

//  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";
}

print 'DKIM Signed Mail Sent!' . "\n";
?>

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