SQL Server
SQL Server
Send HTML Email with Attachments
See more SMTP Examples
Demonstrates how to send an HTML email with file attachments.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @mailman int
EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @mailman, 'SmtpHost', 'smtp.my-starttls-mail-server.com'
EXEC sp_OASetProperty @mailman, 'SmtpUsername', 'MY-SMTP-USERNAME'
EXEC sp_OASetProperty @mailman, 'SmtpPassword', 'MY-SMTP-PASSWORD'
EXEC sp_OASetProperty @mailman, 'StartTLS', 1
EXEC sp_OASetProperty @mailman, 'SmtpPort', 587
-- Create a new email object
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
EXEC sp_OASetProperty @email, 'Subject', 'Test SMTP API to Send HTML Email with Attachments'
EXEC sp_OASetProperty @email, 'From', 'Joe Programmer <joe@my-starttls-mail-server.com>'
EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Chilkat Support', 'support@chilkatsoft.com'
-- Add a plain-text alternative body, which will likely never be seen.
-- (It is shown if the receiving email client is incapable of displaying HTML email.)
EXEC sp_OAMethod @email, 'AddPlainTextAlternativeBody', @success OUT, 'This is a plain-text alternative body...'
-- Our HTML will include an image, so add the related image here.
DECLARE @contentIdStarfish nvarchar(4000)
EXEC sp_OAMethod @email, 'AddRelatedFile', @contentIdStarfish OUT, 'qa_data/jpg/starfish.jpg'
EXEC sp_OAGetProperty @email, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @email
RETURN
END
-- The src attribute for the image tag is set to the contentIdStarfish:
DECLARE @sbHtml int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbHtml OUT
EXEC sp_OAMethod @sbHtml, 'Append', @success OUT, '<html><body><p>This is an HTML email with an embedded image.</p>'
EXEC sp_OAMethod @sbHtml, 'Append', @success OUT, '<p><img src="cid:CONTENT_ID_STARFISH" /></p></body></html>'
DECLARE @numReplacements int
EXEC sp_OAMethod @sbHtml, 'Replace', @numReplacements OUT, 'CONTENT_ID_STARFISH', @contentIdStarfish
EXEC sp_OAMethod @sbHtml, 'GetAsString', @sTmp0 OUT
EXEC sp_OAMethod @email, 'AddHtmlAlternativeBody', @success OUT, @sTmp0
-- Finally, add some attachments to the email.
-- Add a file attachment.
EXEC sp_OAMethod @email, 'AddFileAttachment2', @success OUT, 'qa_data/pdf/fishing.pdf', 'application/pdf'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @sbHtml
RETURN
END
-- Add an attachment where the content is contained in a string.
DECLARE @content nvarchar(4000)
SELECT @content = 'This is the content of the 2nd attached file.'
EXEC sp_OAMethod @email, 'AddStringAttachment', @success OUT, 'someText.txt', @content
-- Send the HTML email.
EXEC sp_OAMethod @mailman, 'SendEmail', @success OUT, @email
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @sbHtml
RETURN
END
EXEC sp_OAMethod @mailman, 'CloseSmtpConnection', @success OUT
IF @success <> 1
BEGIN
PRINT 'Connection to SMTP server not closed cleanly.'
END
PRINT 'HTML email with attachments sent!'
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @sbHtml
END
GO