SQL Server
SQL Server
Get the text body content of a MIME part.
See more MIME Examples
Explains and demonstrates the GetBodyEncoded and GetBodyDecoded methods. This example uses the MIME test data located at http://www.chilkatsoft.com/testData/sampleMime1.txtThe sampleMime1.txt contains:
Content-Type: multipart/mixed; boundary="------------070404010201060604000708"; This is a multi-part message in MIME format. --------------070404010201060604000708 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; Falsches =C3=9Cben von Xylophonmusik qu=C3=A4lt jeden gr=C3=B6=C3=9Feren Zwe= rg. --------------070404010201060604000708 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; RmFsc2NoZXMgw5xiZW4gdm9uIFh5bG9waG9ubXVzaWsgcXXDpGx0IGplZGVuIGdyw7bDn2VyZW4g Wndlcmcu --------------070404010201060604000708 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="iso-8859-1"; Falsches Üben von Xylophonmusik quält jeden größeren Zwerg. --------------070404010201060604000708--
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 @mime int
EXEC @hr = sp_OACreate 'Chilkat.Mime', @mime OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Load the sampleMime1.txt file into the MIME object.
-- (This file is available at http://www.chilkatsoft.com/testData/sampleMime1.txt )
EXEC sp_OAMethod @mime, 'LoadMimeFile', @success OUT, 'sampleMime1.txt'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
RETURN
END
-- The sampleMime1.txt is a MIME document with a top-level
-- multipart/mixed containing 3 sub-parts, each of which has the
-- same body text but with different content-transfer-encodings and
-- using different character encodings (utf-8 and iso-8859-1).
-- Calling mime.GetBodyEncoded or mime.GetBodyDecoded on the
-- top-level multipart/mixed MIME object will return an empty string.
-- It is because the "body" of a multipart MIME object is always empty.
-- A multipart MIME object contains sub-parts (each a MIME object),
-- and it is only the leaf-objects that can have non-empty bodies.
-- Get GetBodyDecoded method returns the body text decoded
-- from whatever the content-transfer-encoding may be, and
-- converted from whatever charset encoding might be used.
-- In this case, calling GetBodyDecoded on each of the three
-- sub-parts will return the same string.
-- To demonstrate:
DECLARE @part1 int
EXEC @hr = sp_OACreate 'Chilkat.Mime', @part1 OUT
EXEC sp_OAMethod @mime, 'PartAt', @success OUT, 0, @part1
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
EXEC @hr = sp_OADestroy @part1
RETURN
END
EXEC sp_OAMethod @part1, 'GetBodyDecoded', @sTmp0 OUT
PRINT @sTmp0
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 @part1
EXEC @hr = sp_OADestroy @part2
RETURN
END
EXEC sp_OAMethod @part2, 'GetBodyDecoded', @sTmp0 OUT
PRINT @sTmp0
DECLARE @part3 int
EXEC @hr = sp_OACreate 'Chilkat.Mime', @part3 OUT
EXEC sp_OAMethod @mime, 'PartAt', @success OUT, 2, @part3
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
EXEC @hr = sp_OADestroy @part1
EXEC @hr = sp_OADestroy @part2
EXEC @hr = sp_OADestroy @part3
RETURN
END
EXEC sp_OAMethod @part3, 'GetBodyDecoded', @sTmp0 OUT
PRINT @sTmp0
-- The GetBodyEncoded method will NOT decode from
-- whatever content-transfer-encoding is used. However, it will
-- convert from whatever internal character encoding
-- may be used to return a string appropriate for the calling
-- programming language (for example, in .NET or any language
-- using ActiveX, all strings are Unicode..)
EXEC sp_OAMethod @part1, 'GetBodyEncoded', @sTmp0 OUT
PRINT @sTmp0
EXEC sp_OAMethod @part2, 'GetBodyEncoded', @sTmp0 OUT
PRINT @sTmp0
EXEC sp_OAMethod @part3, 'GetBodyEncoded', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @mime
EXEC @hr = sp_OADestroy @part1
EXEC @hr = sp_OADestroy @part2
EXEC @hr = sp_OADestroy @part3
END
GO