SQL Server
SQL Server
Convert HTML Web Page to Email and Send
See more MHT / HTML Email Examples
Converts an HTML page at a URL into an email with embedded images and sends it.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 assumes 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
-- The MHT component can be used to convert an HTML page
-- from a URL, file, or in-memory HTML into an email
-- with embedded images and style sheets.
DECLARE @mht int
EXEC @hr = sp_OACreate 'Chilkat.Mht', @mht OUT
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
-- There are two ways of embedding images in emails: with CIDs
-- and without. When using CIDs, the IMG SRC attributes use
-- urls that begin with "cid:" and the corresponding image
-- embedded within the email includes a Content-ID header field.
-- When not using CIDs, the IMG SRC attribute can have a URL,
-- path, etc. and the corresponding image embedded within
-- the email has a matching Content-Location header field.
-- When testing with GMail, if CIDs are used the email will
-- be displayed with images blocked (by default) unless
-- the user allows them to be displayed. Without CIDs,
-- the images are automatically displayed.
-- When testing with Eudora, Mozilla Thunderbird, and Outlook Express,
-- embedded images display correctly with our without CIDs.
-- When testing with Yahoo! Mail, embedded images display OK.
-- However, the Yahoo! Mail user has the option of blocking
-- images. If this is turned on, the CID images will still
-- display correctly even though images are blocked. Why?
-- It's because when viewing the email there is no external
-- HTTP request to fetch an image. Therefore, a spammer
-- cannot get an indication that you've read the email.
-- However, if CIDs are not used, the images are blocked by
-- any Yahoo! Mail user that has image blocking turned on --
-- even though the images are embedded.
-- I haven't tested Hotmail yet...
-- Regardless, there is no perfect solution. If CIDs are used,
-- GMail users may block your embedded images, if CIDs are not
-- used, Yahoo! Mail users may block your embedded images.
-- I recommend setting using CIDs. This is what Mozilla Thunderbird
-- does by default, and it's the more clear an unambiguous way
-- to indicate that images are indeed embedded.
EXEC sp_OASetProperty @mht, 'UseCids', 1
DECLARE @emlStr nvarchar(4000)
EXEC sp_OAMethod @mht, 'GetEML', @emlStr OUT, 'http://www.bonairefishing.com/'
EXEC sp_OAGetProperty @mht, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
EXEC sp_OAGetProperty @mht, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @mht
EXEC @hr = sp_OADestroy @email
RETURN
END
EXEC sp_OAMethod @email, 'SetFromMimeText', @success OUT, @emlStr
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @mht
EXEC @hr = sp_OADestroy @email
RETURN
END
EXEC sp_OASetProperty @email, 'Subject', 'Test HTML email'
-- This example is tested in:
-- Outlook 2000, Eudora 7, Mozilla Thunderbird 1.5.0.9, Outlook Express 6, GMail, Yahoo Mail
EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Chilkat Support', 'support@chilkatsoft.com'
-- Note: Chilkat does not regularly check our GMail and Yahoo
-- email accounts. Please send support email to support@chilkatsoft.com
EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Chilkat on Yahoo', 'chilkat_software@yahoo.com'
EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Chilkat on GMail', 'chilkat.support@gmail.com'
EXEC sp_OASetProperty @email, 'From', 'chilkat@live.com'
-- Send email using smtp.live.com
EXEC sp_OASetProperty @mailman, 'SmtpHost', 'smtp.live.com'
EXEC sp_OASetProperty @mailman, 'SmtpUsername', 'chilkat@live.com'
EXEC sp_OASetProperty @mailman, 'SmtpPassword', 'myPassword'
EXEC sp_OASetProperty @mailman, 'SmtpPort', 587
EXEC sp_OASetProperty @mailman, 'StartTLS', 1
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 @mht
EXEC @hr = sp_OADestroy @email
RETURN
END
EXEC sp_OAMethod @mailman, 'CloseSmtpConnection', @success OUT
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @mht
EXEC @hr = sp_OADestroy @email
RETURN
END
PRINT 'HTML Email Sent!'
EXEC @hr = sp_OADestroy @mailman
EXEC @hr = sp_OADestroy @mht
EXEC @hr = sp_OADestroy @email
END
GO