Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Lianja) Iterate MIME Parts of an EmailDemonstrates how to iterate over the MIME sub-parts of an email, and retrieve the content of each MIME sub-part body. Note: This example requires some new features added to Chilkat v9.5.0.95.
// This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // See the following Chilkat post to Quickly Understand Email MIME loEmail = createobject("CkEmail") llSuccess = loEmail.LoadEml("qa_data/eml/sample.eml") if (llSuccess = .F.) then ? "Failed to load .eml" release loEmail return endif loSbContentType = createobject("CkStringBuilder") llCaseSensitive = .F. // Get the total number of non-multipart MIME sub-parts. // (This is a simple way of iterating over all the MIME leaf parts regardless of the MIME tree structure) llInlineOnly = .F. llExcludeAttachments = .F. lcSearchSpec = "*/*" lnNumParts = loEmail.GetNumPartsOfType(lcSearchSpec,llInlineOnly,llExcludeAttachments) i = 0 do while i < lnNumParts // What is the Content-Type of this MIME part? loSbContentType.Append(loEmail.GetNthContentType(i,lcSearchSpec,llInlineOnly,llExcludeAttachments)) if (loSbContentType.StartsWith("text/",llCaseSensitive) = .T.) then // Get the text body of this MIME part. lcTextBody = loEmail.GetNthTextPartOfType(i,lcSearchSpec,llInlineOnly,llExcludeAttachments) ? "Got text body for " + loSbContentType.GetAsString() else if (loSbContentType.ContentsEqual("message/rfc822",llCaseSensitive) = .T.) then // If the Content-Type is message/rfc822, then the MIME body for this part contains a full embedded MIME messages. // Your application could load it into a Chilkat email object and recursively process... loAttachedEmail = createobject("CkEmail") loBdMime = createobject("CkBinData") loEmail.GetNthBinaryPartOfTypeBd(i,lcSearchSpec,llInlineOnly,llExcludeAttachments,loBdMime) loAttachedEmail.SetFromMimeBd(loBdMime) // Now your app can recursively process the attachedEmail... else // Get the bytes of this MIME body part. loBd = createobject("CkBinData") loEmail.GetNthBinaryPartOfTypeBd(i,lcSearchSpec,llInlineOnly,llExcludeAttachments,loBd) ? "Got binary body for " + loSbContentType.GetAsString() + " numBytes = " + str(loBd.NumBytes) endif endif loSbContentType.Clear() i = i + 1 enddo release loEmail release loSbContentType release loAttachedEmail release loBdMime release loBd |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.