Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
Send DKIM Signed EmailDemonstrates 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).
CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @sTmp0 nvarchar(4000) -- 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. DECLARE @mailman int EXEC @hr = sp_OACreate 'Chilkat.MailMan2', @mailman OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Any string argument automatically begins the 30-day trial. DECLARE @success int EXEC sp_OAMethod @mailman, 'UnlockComponent', @success OUT, '30-day trial' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- The dkim object is used for creating the DKIM signature. -- It belongs to the "Chilkat MIME" product. DECLARE @dkim int EXEC @hr = sp_OACreate 'Chilkat.Dkim', @dkim OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END EXEC sp_OAMethod @dkim, 'UnlockComponent', @success OUT, 'Anything for 30-day trial' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @dkim, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Set the SMTP server. EXEC sp_OASetProperty @mailman, 'SmtpHost', 'smtp.chilkatsoft.com' -- Set the SMTP login/password (if required) EXEC sp_OASetProperty @mailman, 'SmtpUsername', 'myUsername' EXEC sp_OASetProperty @mailman, 'SmtpPassword', 'myPassword' -- Set the SmtpPort if your SMTP server uses an alternative port (default = 25) EXEC sp_OASetProperty @mailman, 'SmtpPort', 587 -- Create a new email object DECLARE @email int EXEC @hr = sp_OACreate 'Chilkat.Email2', @email OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END EXEC sp_OASetProperty @email, 'Subject', 'This is a test' EXEC sp_OASetProperty @email, 'Body', 'This is a test' EXEC sp_OASetProperty @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. EXEC sp_OAMethod @email, 'AddTo', NULL, 'Chilkat Software', 'chilkat_software@yahoo.com' EXEC sp_OAMethod @email, 'AddTo', NULL, '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... EXEC sp_OAMethod @mailman, 'RenderToMimeBytes', @mimeData OUT, @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.. EXEC sp_OASetProperty @dkim, 'DkimDomain', 'chilkatsoft.com' EXEC sp_OASetProperty @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. DECLARE @password nvarchar(4000) SELECT @password = 'optionalPassword' EXEC sp_OAMethod @dkim, 'LoadDkimPkFile', @success OUT, 'myPrivateKey.pem', @password IF @success <> 1 BEGIN EXEC sp_OAGetProperty @dkim, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Add the DKIM-Signature header and -- returns the new MIME with DKIM-Signature added. EXEC sp_OAMethod @dkim, 'AddDkimSignature', @dkimSignedMime OUT, @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. DECLARE @strFrom nvarchar(4000) SELECT @strFrom = 'support@chilkatsoft.com' -- To send to multiple email addresses, the strTo should be set to a comma-separated -- list of email addresses. DECLARE @strTo nvarchar(4000) SELECT @strTo = 'chilkat_software@yahoo.com, admin@chilkatsoft.com' EXEC sp_OAMethod @mailman, 'SendMimeBytes', @success OUT, @strFrom, @strTo, @dkimSignedMime IF @success <> 1 BEGIN EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN 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: EXEC sp_OAMethod @mailman, 'CloseSmtpConnection', @success OUT IF @success <> 1 BEGIN PRINT 'Connection to SMTP server not closed cleanly.' END PRINT 'DKIM Signed Mail Sent!' END GO |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.