SQL Server
SQL Server
Parse MIME Header Fields
See more MIME Examples
Demonstrates how to parse MIME header fields, including Content-Type, Content-Disposition, and Content-Transfer-Encoding.This example uses a MIME test file located at http://www.chilkatsoft.com/testData/sampleMime2.txt. It contains the following MIME:
Content-Type: multipart/mixed; boundary="------------080707010302060306060800"; This is a multi-part message in MIME format. --------------080707010302060306060800 Content-Type: text/plain Content-Transfer-Encoding: 7bit This is the plain-text body. --------------080707010302060306060800 Content-Disposition: attachment; filename="starfish.gif"; Content-Transfer-Encoding: base64 Content-Type: image/gif; name="starfish.gif"; R0lGODlhIAAgAPcAAP///+/v7/f39+/n5/fv7//39/fn597OzufW1tbGxs69vffe3u/W1salpZQQ EIQYEJwQCJQYCJwYCM6clL2Ee5wpGIwhEK0YANatpdalnHMYCKUhCJQYAKUYAM6Ec5QhCJwhCPfW zu/Oxta1rb17a6UhAK0hAPe9rb2Ec7V7a71rUpwpCL0xCJwhAOfOxta9tcatpdallM6cjMaUhK1C IZwxELU5EK0xCLUxCN61pcacjK1rUrVaOaVKKZxCIZwxCKUxCL05CLUxAM6llO+1nMZzUr1rSrVS KaVCGK1CGLVCEJQxCK05CLU5CIwpAKUxAK0xAM69tffWxrVrSrVaMbVKGMZKEL1CCLU5AP/v597O xufGtcallNaljLWEa96ce9aUc717Wq1aMcZjMbVaKbVSIa1KGL1SGJw5CK1CCLVCCMZKCM5KCMZC APfn3tbGvc57Ss5aGMZSENZaEL1KCM5SCLVCAMZKAPfezvfOte/GrdatlN6cc9aEUr1rOc5jIdZj GL1SEM5aELVKCMZSCNZaCL1KAOfOvc57Qs5jGNZjEM5aCMZSAN5aAO/OtefGrcZjGM5jEN5rELVS CMZaCN5jCOdrCM5aAO/Gpc5rGMZjENZrEN5jAOdrAOfe1t6MQtZ7Kd57IdZzGM5rEMZjCNZrCM5j ANbOxu/Wve+9jPe9hO+1e+etc85zGO+EGMZrENZzEM5rCN5zCO97COdzAO/n3u+1c+ecSt6UQs57 Ie+MIdZ7GOeEGM5zEO+EELVjCOd7CO+ECOd7AO/Ope+tWuelUu+UKeeMGOeEEO+MEOeECO+EAO/G jO+cKfeUEO+MCO+tSuecMeeUGN6MEOeMCO+UCO+tQuelOe+lMe+lKe+cGOeUEO+cEOeUCN6MAO+U AOe9c/e1Oe+lId6UEO+cCPe9Qve1Me+lEOecCO+lCOe1Su+1OeelGO+tGPetCPetAO+9Qve1GO+1 EPe9CPe9APf37+fv5/f//+/v9/fv9+fe5+/e5869xufW3t7GzgAAACwAAAAAIAAgAAAI/wABCBxI sKDBgwgTFgCwMKHDhwyHYWoIsWIBZsdyHaoIcaGbaNQ0ZeBYEROvV0pmCCDp8B4rZaOUcGHpcIEx aqPMYLjHMcsCAwgxkRv3q8wLnhAdfWpmDRwqAgQFEEvHLlCZNxwfpVmkDJ04dczc3LsXQtq4XWh8 aGH48F49FDUC9UInT941W6luCUOWyQmSLST3eUnChNS4c9SooQuGDNkrIIrA1MqXr0A+AyFC4Kln kMAQKljotJJGDZklS9PkyEHGLZu1ctbCmWvXThurfAbvHSii5kegxpYqtRpEKFnid/TSneu2LRYh P/0Q1tJRgYOZV71UL5LEK1KiV68yVf+xgaOKmAZICd5bmA8FEyZQlMjRRAhQGQv4QQSJL8ZLFHwP 6aFIJXNIEkggcgQhwYIlKEFFGDKcEgBCBVCkByC0IAMJGnSAYsUNEmzAgw4HBJBeQisZcAswjqGh wQeBKGIFFD0ocCJE9diyjTKRLPHBAx/cEAcdgxgx4Vg3HnSPKs4E00sNEYDwgQksQDLJIohMSJIj ugSTCRA/ILFDCjTckUkrpYiCAEluYCMLJCsoMQUM9gjQRSSL7CLJJjmQxMw3kQChxA78IFULHIK0 MgonXyR5UAHWVBKIEmEcUJAIYxgSSSF94AZRPrgsQgUF0RmUgWpy/LFmRYdMkACAANwrWA8cbAhi RZ8cjRWro0QEEsQVGTiKkLAM5QNGFWrAQFNLBIzABQPLRktQQAA7 --------------080707010302060306060800--
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.
DECLARE @mime int
EXEC @hr = sp_OACreate 'Chilkat.Mime', @mime OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Load the sampleMime2.txt file into the MIME object.
-- (This file is available at http://www.chilkatsoft.com/testData/sampleMime2.txt )
EXEC sp_OAMethod @mime, 'LoadMimeFile', @success OUT, 'sampleMime2.txt'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
RETURN
END
-- The GIF image is the 2nd sub-part located directly under the
-- top-level MIME node. Indexing begins at 0, therefore the 2nd
-- sub-part is at index 1.
DECLARE @part2 int
EXEC @hr = sp_OACreate 'Chilkat.Mime', @part2 OUT
EXEC sp_OAMethod @mime, 'PartAt', @success OUT, 1, @part2
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
EXEC @hr = sp_OADestroy @part2
RETURN
END
-- -------------------------------
-- Content-Disposition
-- -------------------------------
-- In this example, the Content-Disposition header field
-- contains this value:
-- attachment; filename="starfish.gif"
-- To get the "filename", call GetHeaderFieldAttribute
-- Header field names and attribute names are case insensitive.
DECLARE @filename nvarchar(4000)
EXEC sp_OAMethod @part2, 'GetHeaderFieldAttribute', @filename OUT, 'Content-Disposition', 'filename'
PRINT 'Filename: ' + @filename
-- Because the "filename" is so often accessed, it is also available
-- by accessing the "Filename" property:
EXEC sp_OAGetProperty @part2, 'Filename', @sTmp0 OUT
PRINT 'Filename: ' + @sTmp0
-- The disposition (without attributes) which in this case
-- is the string "attachment" is accessed via the Disposition property:
EXEC sp_OAGetProperty @part2, 'Disposition', @sTmp0 OUT
PRINT 'Disposition: ' + @sTmp0
-- To get the full value of the Content-Disposition header field,
-- call GetHeaderField.
EXEC sp_OAMethod @part2, 'GetHeaderField', @sTmp0 OUT, 'Content-Disposition'
PRINT 'Content-Disposition: ' + @sTmp0
-- -------------------------------
-- Content-Type
-- -------------------------------
-- In this example, the Content-Type header field
-- contains this value:
-- image/gif; name="starfish.gif"
-- To get the "name", call GetHeaderFieldAttribute
DECLARE @name nvarchar(4000)
EXEC sp_OAMethod @part2, 'GetHeaderFieldAttribute', @name OUT, 'Content-Type', 'name'
PRINT 'Content-Type name: ' + @name
-- Because the "name" is so often accessed, it is also available
-- by accessing the "Name" property:
EXEC sp_OAGetProperty @part2, 'Name', @sTmp0 OUT
PRINT 'Content-Type name: ' + @sTmp0
-- The content-type without attributes is available in the
-- ContentType property:
EXEC sp_OAGetProperty @part2, 'ContentType', @sTmp0 OUT
PRINT 'Content-Type: ' + @sTmp0
-- To get the full value of the Content-Type header field,
-- call GetHeaderField.
EXEC sp_OAMethod @part2, 'GetHeaderField', @sTmp0 OUT, 'Content-Type'
PRINT 'Content-Type: ' + @sTmp0
-- -------------------------------
-- Content-Transfer-Encoding
-- -------------------------------
-- The Encoding property contains the value of the
-- Content-Transfer-Encoding property.
-- Calling GetHeaderField("Content-Transfer-Encoding") is
-- equivalent to accessing the Encoding property:
EXEC sp_OAGetProperty @part2, 'Encoding', @sTmp0 OUT
PRINT 'Content-Transfer-Encoding: ' + @sTmp0
EXEC sp_OAMethod @part2, 'GetHeaderField', @sTmp0 OUT, 'Content-Transfer-Encoding'
PRINT 'Content-Transfer-Encoding: ' + @sTmp0
PRINT 'Finished.'
EXEC @hr = sp_OADestroy @mime
EXEC @hr = sp_OADestroy @part2
END
GO