![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) MIME Body vs. Sub-PartsExplains the difference between sub-parts and body. MIME documents (i.e. messages) can have a nested structure. The simplest MIME message contains a header followed by content (possibly encoded). The header is delimited from the content by two consecutive CRLF's.
A MIME message may be multipart. If so, then the Content-Type header field indicates "multipart" and the content the follows the header is itself a MIME message, which may also be multipart, etc. You can see how MIME messages effectively have a tree structure. The non-leaf nodes have Content-Types that are "multipart/
The Chilkat MIME component/library uses two terms that need to be understood in order to effectively use the API. These are "body" and "sub-part". A multipart node has 1 or more sub-parts, but its body is empty. A leaf node (i.e. non-multipart node) has no sub-parts, but the body is (usually) non-empty.
This example creates a multipart MIME message and shows the results of getting the sub-parts and body of each node. Note: This example requires Chilkat v11.0.0 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoMime Variant vPart1 Handle hoPart1 Variant vPart2 Handle hoPart2 Integer n Variant vPart Handle hoPart String sTemp1 Move False To iSuccess // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatMime)) To hoMime If (Not(IsComObjectCreated(hoMime))) Begin Send CreateComObject of hoMime End // Create a multipart/mixed MIME message with two sub-parts. // We'll use the Base64 encoding for the 2nd sub-part. Get Create (RefClass(cComChilkatMime)) To hoPart1 If (Not(IsComObjectCreated(hoPart1))) Begin Send CreateComObject of hoPart1 End Get ComSetBodyFromPlainText Of hoPart1 "This is part 1" To iSuccess Get Create (RefClass(cComChilkatMime)) To hoPart2 If (Not(IsComObjectCreated(hoPart2))) Begin Send CreateComObject of hoPart2 End Get ComSetBodyFromPlainText Of hoPart2 "This is part 2" To iSuccess Set ComEncoding Of hoPart2 To "base64" Get ComNewMultipartMixed Of hoMime To iSuccess Set ComUseMmDescription Of hoMime To False Get pvComObject of hoPart1 to vPart1 Get ComAppendPart Of hoMime vPart1 To iSuccess Get pvComObject of hoPart2 to vPart2 Get ComAppendPart Of hoMime vPart2 To iSuccess // Show the MIME message: Get ComGetMime Of hoMime To sTemp1 Showln sTemp1 // Here's the MIME: // Content-Type: multipart/mixed; // boundary="------------040605030407000302060008" // // --------------040605030407000302060008 // Content-Type: text/plain; // charset="us-ascii" // Content-Transfer-Encoding: 7bit // // This is part 1 // --------------040605030407000302060008 // Content-Type: text/plain; // charset="us-ascii" // Content-Transfer-Encoding: base64 // // VGhpcyBpcyBwYXJ0IDI= // // --------------040605030407000302060008-- // If we examine the root node of the MIME message, // we see that it has 2 sub-parts and the body is empty (as expected) Get ComNumParts Of hoMime To n Showln "Num Parts = " n Get ComGetBodyDecoded Of hoMime To sTemp1 Showln "Body = " sTemp1 // The GetEntireBody retrieves the entire content after // the header. (Perhaps GetEntireBody should've been named // GetEntireContent to make it less confusing...) Showln "---- EntireBody:" Get ComGetEntireBody Of hoMime To sTemp1 Showln sTemp1 Showln "********" // Now examine the 2nd sub-part. It has a body encoded // using base64. Get the contents of the body in both // decoded and encoded forms: // index 0 is the 1st part, index 1 is the 2nd part. Get Create (RefClass(cComChilkatMime)) To hoPart If (Not(IsComObjectCreated(hoPart))) Begin Send CreateComObject of hoPart End Get pvComObject of hoPart to vPart Get ComPartAt Of hoMime 1 vPart To iSuccess Showln "Decoded Body:" Get ComGetBodyDecoded Of hoPart To sTemp1 Showln sTemp1 Showln "Encoded Body:" Get ComGetBodyEncoded Of hoPart To sTemp1 Showln sTemp1 End_Procedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.