Delphi Examples

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

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

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

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATMAILLib2_TLB,
    CHILKATMIMELib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
mailman: TChilkatMailMan2;
success: Integer;
dkim: TChilkatDkim;
email: CHILKATMAILLib2_TLB.IChilkatEmail2;
mimeData: Array of Byte;
password: String;
dkimSignedMime: Array of Byte;
strFrom: String;
strTo: String;

begin
//  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 := TChilkatMailMan2.Create(Self);

//  Any string argument automatically begins the 30-day trial.
success := mailman.UnlockComponent('30-day trial');
if (success <> 1) then
  begin
    ShowMessage(mailman.LastErrorText);
    Exit;
  end;

//  The dkim object is used for creating the DKIM signature.
//  It belongs to the "Chilkat MIME" product.
dkim := TChilkatDkim.Create(Self);

success := dkim.UnlockComponent('Anything for 30-day trial');
if (success <> 1) then
  begin
    ShowMessage(dkim.LastErrorText);
    Exit;
  end;

//  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 := CoChilkatEmail2.Create();

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 As CHILKATMAILLib2_TLB.IChilkatEmail2);

//  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 <> 1) then
  begin
    ShowMessage(dkim.LastErrorText);
    Exit;
  end;

//  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 <> 1) then
  begin
    ShowMessage(mailman.LastErrorText);
    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 <> 1) then
  begin
    ShowMessage('Connection to SMTP server not closed cleanly.');
  end;

ShowMessage('DKIM Signed Mail Sent!');
end;

 

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

Mail Component · .NET Email Component · XML Parser