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
(Swift 2) 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.
func chilkatTest() { // 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 let email = CkoEmail() var success: Bool = email.LoadEml("qa_data/eml/sample.eml") if success == false { print("Failed to load .eml") return } let sbContentType = CkoStringBuilder() var caseSensitive: Bool = false // 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) var inlineOnly: Bool = false var excludeAttachments: Bool = false var searchSpec: String? = "*/*" var numParts: Int = email.GetNumPartsOfType(searchSpec, inlineOnly: inlineOnly, excludeAttachments: excludeAttachments).intValue var i: Int = 0 while i < numParts { // What is the Content-Type of this MIME part? sbContentType.Append(email.GetNthContentType(i, contentType: searchSpec, inlineOnly: inlineOnly, excludeAttachments: excludeAttachments)) if sbContentType.StartsWith("text/", caseSensitive: caseSensitive) == true { // Get the text body of this MIME part. var textBody: String? = email.GetNthTextPartOfType(i, contentType: searchSpec, inlineOnly: inlineOnly, excludeAttachments: excludeAttachments) print("Got text body for \(sbContentType.GetAsString())") } else { if sbContentType.ContentsEqual("message/rfc822", caseSensitive: caseSensitive) == true { // 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... let attachedEmail = CkoEmail() let bdMime = CkoBinData() email.GetNthBinaryPartOfTypeBd(i, contentType: searchSpec, inlineOnly: inlineOnly, excludeAttachments: excludeAttachments, bd: bdMime) attachedEmail.SetFromMimeBd(bdMime) // Now your app can recursively process the attachedEmail... } else { // Get the bytes of this MIME body part. let bd = CkoBinData() email.GetNthBinaryPartOfTypeBd(i, contentType: searchSpec, inlineOnly: inlineOnly, excludeAttachments: excludeAttachments, bd: bd) print("Got binary body for \(sbContentType.GetAsString()) numBytes = \(bd.NumBytes.intValue)") } } sbContentType.Clear() i = i + 1 } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.