Sample code for 30+ languages & platforms
SQL Server

Create Email with Non-Standard Binary Body

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

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
    -- 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 @mime int
    EXEC @hr = sp_OACreate 'Chilkat.Mime', @mime OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @mime, 'SetBodyFromFile', @success OUT, 'VoiceMessage.wav'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        RETURN
      END

    -- The MIME has this header:
    -- Content-Disposition: attachment;
    -- 	 filename="VoiceMessage.wav"
    -- Content-Transfer-Encoding: base64
    -- Content-Type: audio/x-wav;
    -- 	name="VoiceMessage.wav"

    -- We don't want the content-disposition to be an
    -- attachment -- otherwise the email object will self-correct
    -- and put it in a multipart/mixed format...
    EXEC sp_OASetProperty @mime, 'Disposition', ''
    EXEC sp_OASetProperty @mime, 'Filename', ''

    DECLARE @strMime nvarchar(4000)

    EXEC sp_OAMethod @mime, 'GetMime', @strMime OUT

    PRINT @strMime

    -- Now load it into an email object:
    DECLARE @email int
    EXEC @hr = sp_OACreate 'Chilkat.Email', @email OUT

    EXEC sp_OAMethod @email, 'SetFromMimeText', @success OUT, @strMime
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        EXEC @hr = sp_OADestroy @email
        RETURN
      END

    -- Add subject, TO, FROM, etc.
    EXEC sp_OASetProperty @email, 'Subject', 'This is a test'
    EXEC sp_OASetProperty @email, 'From', 'support@chilkatsoft.com'
    EXEC sp_OAMethod @email, 'AddTo', @success OUT, 'Matt', 'matt@chilkatsoft.com'

    -- Your email is ready to send.
    -- (but for this example, we'll simply save it to a file...)
    EXEC sp_OAMethod @email, 'SaveEml', @success OUT, 'email.eml'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @email, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @mime
        EXEC @hr = sp_OADestroy @email
        RETURN
      END


    PRINT 'OK!'

    EXEC @hr = sp_OADestroy @mime
    EXEC @hr = sp_OADestroy @email


END
GO