SQL Server
SQL Server
MedTunnel: Get Message Attachment
See more MedTunnel Examples
Get a specific attachment of a message. The MessageId and AttachmentId are obtained from the "Get Mailbox Messages" example.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 assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Implements the following CURL command:
-- curl -X GET -k
-- -H "Authorization:PutAuthorizationTokenHere"
-- https://server.medtunnel.com/medtunnelmsg/api/Message/GetAttachment?messageid=989448&attachmentid=424857&setreadflag=false
-- Use the following online tool to generate HTTP code from a CURL command
-- Convert a cURL Command to HTTP Source Code
EXEC sp_OAMethod @http, 'SetRequestHeader', NULL, 'Authorization', 'PutAuthorizationTokenHere'
-- The messageId and attachmentId are contained in the response from reading the mailbox messages.
EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'messageId', '989448'
EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'attachmentId', '424857'
EXEC sp_OAMethod @http, 'SetUrlVar', @success OUT, 'setReadFlag', 'false'
-- Download the attachment data into bd.
DECLARE @bd int
EXEC @hr = sp_OACreate 'Chilkat.BinData', @bd OUT
EXEC sp_OAMethod @http, 'QuickGetBd', @success OUT, 'https://server.medtunnel.com/MedTunnelMsg/api/Message/GetAttachment?messageid={$messageId}&attachmentid={$attachmentId}&setreadflag={$setReadFlag}', @bd
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @bd
RETURN
END
DECLARE @respStatusCode int
EXEC sp_OAGetProperty @http, 'LastStatus', @respStatusCode OUT
PRINT 'Response Status Code = ' + @respStatusCode
IF @respStatusCode >= 400
BEGIN
PRINT 'Response Header:'
EXEC sp_OAGetProperty @http, 'LastHeader', @sTmp0 OUT
PRINT @sTmp0
-- For errors, the response body contains an error message instead of the actual attachment data.
PRINT 'Response Body:'
EXEC sp_OAMethod @bd, 'GetString', @sTmp0 OUT, 'utf-8'
PRINT @sTmp0
PRINT 'Failed.'
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @bd
RETURN
END
-- Save the attachment data.
-- The attachment filename is also contained in the response from reading the mailbox messages.
EXEC sp_OAMethod @bd, 'WriteFile', @success OUT, 'qa_output/starfish.jpg'
IF @success <> 1
BEGIN
PRINT 'Failed to save attachment file.'
END
ELSE
BEGIN
PRINT 'Success.'
END
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @bd
END
GO