SQL Server
SQL Server
Forward by Attaching the Existing Email to a New Email
See more Email Object Examples
Demonstrates how to forward an email by attaching the email to a new email.This example reads an email from an IMAP server, attaches the email to a new email, and sends the new email.
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
-- 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.
-- Read the 1st (most recent) email in an Inbox.
DECLARE @imap int
EXEC @hr = sp_OACreate 'Chilkat.Imap', @imap OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Connect to an IMAP server.
EXEC sp_OASetProperty @imap, 'Ssl', 1
EXEC sp_OASetProperty @imap, 'Port', 993
EXEC sp_OAMethod @imap, 'Connect', @success OUT, 'imap.example.com'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
-- Login
EXEC sp_OAMethod @imap, 'Login', @success OUT, 'myLogin', 'myPassword'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
-- Select an IMAP mailbox
EXEC sp_OAMethod @imap, 'SelectMailbox', @success OUT, 'Inbox'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
RETURN
END
DECLARE @numEmails int
EXEC sp_OAGetProperty @imap, 'NumMessages', @numEmails OUT
-- Fetch the email at the last sequence number.
-- (We are assuming the Inbox has at least 1 email)
DECLARE @email int
EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
EXEC sp_OAMethod @imap, 'FetchEmail', @success OUT, 0, @numEmails, 0, @email
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @imap, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @email
RETURN
END
-- Disconnect from the IMAP server.
EXEC sp_OAMethod @imap, 'Disconnect', @success OUT
EXEC sp_OAGetProperty @email, 'Subject', @sTmp0 OUT
PRINT @sTmp0
-- Create a new email. The email we just read will be attached to this email.
DECLARE @eForward int
EXEC @hr = sp_OACreate 'Chilkat.Email', @eForward OUT
EXEC sp_OAMethod @eForward, 'AddTo', @success OUT, 'Joe', 'joe@example.com'
EXEC sp_OASetProperty @eForward, 'FromAddress', 'matt@somewhere.com'
EXEC sp_OASetProperty @eForward, 'FromName', 'Matt'
EXEC sp_OASetProperty @eForward, 'Subject', 'This is an email with another email attached.'
EXEC sp_OAMethod @eForward, 'SetHtmlBody', NULL, '<p>Hello, this is an email I''m forwarding to you. See the attached email.</p>'
-- Attach the email.
EXEC sp_OAMethod @eForward, 'AttachEmail', @success OUT, @email
-- We could save the .eml, then double-click on it to view in our mail program, such as Outlook or Thunderbird..
EXEC sp_OAMethod @eForward, 'SaveEml', @success OUT, 'qa_output/forward.eml'
-- We could send (forward) the email..
DECLARE @mailman int
EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT
EXEC sp_OASetProperty @mailman, 'SmtpHost', 'smtp.example.com'
EXEC sp_OASetProperty @mailman, 'SmtpUsername', 'myLogin'
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, @eForward
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mailman, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @eForward
EXEC @hr = sp_OADestroy @mailman
RETURN
END
EXEC sp_OAMethod @mailman, 'CloseSmtpConnection', @success OUT
IF @success <> 1
BEGIN
PRINT 'Connection to SMTP server not closed cleanly.'
END
PRINT 'Mail Sent!'
EXEC @hr = sp_OADestroy @imap
EXEC @hr = sp_OADestroy @email
EXEC @hr = sp_OADestroy @eForward
EXEC @hr = sp_OADestroy @mailman
END
GO