Sample code for 30+ languages & platforms
SQL Server

Auto-Generate or Explicitly Specify the Message-ID Email Header

Demonstrates how to auto-generate or explicitly specify the Message-ID header field.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @success int
    SELECT @success = 0

    DECLARE @email int
    EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OASetProperty @email, 'Subject', 'test'
    EXEC sp_OASetProperty @email, 'Body', 'test'
    EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Joe', 'joe@example1.com'
    EXEC sp_OASetProperty @email, 'From', 'mary@example2.com'

    DECLARE @mailman int
    EXEC @hr = sp_OACreate 'Chilkat.MailMan', @mailman OUT

    -- When the mailman sends email, it renders the email to be sent,
    -- and then sends the rendered MIME.

    -- Instead of actually sending the email, this example will render
    -- to MIME so we can see what would be sent..

    -- We can explicitly set the Message-ID like this:
    EXEC sp_OASetProperty @mailman, 'AutoGenMessageId', 0
    EXEC sp_OAMethod @email, 'AddHeaderField', NULL, 'Message-ID', '<xyz123@abc>'

    DECLARE @mimeStr nvarchar(4000)
    EXEC sp_OAMethod @mailman, 'RenderToMime', @mimeStr OUT, @email

    PRINT @mimeStr

    -- This is what we get:

    -- MIME-Version: 1.0
    -- Date: Mon, 20 Jul 2020 17:20:09 -0500
    -- Message-ID: <xyz123@abc>
    -- Content-Type: text/plain; charset=us-ascii; format=flowed
    -- Content-Transfer-Encoding: 7bit
    -- X-Priority: 3 (Normal)
    -- Subject: test
    -- To: Joe <joe@example1.com>
    -- From: mary@example2.com
    -- 
    -- test


    PRINT '--------'

    -- If we auto-generate...
    EXEC sp_OASetProperty @mailman, 'AutoGenMessageId', 1
    EXEC sp_OAMethod @mailman, 'RenderToMime', @mimeStr OUT, @email

    PRINT @mimeStr

    -- We get this:

    -- MIME-Version: 1.0
    -- Date: Mon, 20 Jul 2020 17:21:20 -0500
    -- Message-ID: <04EDE096BBFE484967F6398A973B0FCF6EA09A44@CHILKATSLICE>
    -- Content-Type: text/plain; charset=us-ascii; format=flowed
    -- Content-Transfer-Encoding: 7bit
    -- X-Priority: 3 (Normal)
    -- Subject: test
    -- To: Joe <joe@example1.com>
    -- From: mary@example2.com
    -- 
    -- test

    EXEC @hr = sp_OADestroy @email
    EXEC @hr = sp_OADestroy @mailman


END
GO