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 3,4,5...) Load .eml and Examine the Structure, Attachments, and Related ItemsDemonstrates how to load examine the MIME structure of a .eml, and also examine the attachment and related item filenames, attached messages, and multipart/report and DSN information.
func chilkatTest() { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. var emlPath: String? = "C:/AAWorkarea/beatrix/roesner.eml" let mime = CkoMime()! var success: Bool = mime.loadFile(emlPath) if success != true { print("\(mime.lastErrorText!)") return } print("---- MIME structure ----") print("\(mime.getStructure("text")!)") print("------------------------") let email = CkoEmail()! success = email.loadEml(emlPath) // Was this a signed and/or encrypted email? // If so, then loading the .eml automatically unwraps // (i.e. verifies signatures and decrypts) and the resultant // email is what existed prior to signing/encrypting. print("Email was Signed: \(email.receivedSigned)") print("Email was Encrypted: \(email.receivedEncrypted)") if email.receivedSigned == true { print("Signature(s) valid = \(email.signaturesValid)") } if email.receivedEncrypted == true { print("Decrypted successfully = \(email.decrypted)") } var i: Int = 0 var numAttach: Int = email.numAttachments.intValue print("Number of attachments = \(numAttach)") while i < numAttach { print("---- Attachment \(i)") // Examine the filename (if any) print("filename: \(email.getAttachmentFilename(i)!)") // Examine the content-ID (if any) print("Content-ID: \(email.getAttachmentContentID(i)!)") // Examine the content-type print("Content-Type: \(email.getAttachmentContentType(i)!)") // Examine the content-disposition print("Content-Disposition\(email.getAttachmentHeader(i, fieldName: "content-disposition")!)") // Examine the attachment size: print("Size (in bytes) of the attachment: \(email.getAttachmentSize(i).intValue)") i = i + 1 } print("--") // Now for the related items. // Note: A MIME sub-part can potentially be both a related item AND an attachment. // The typical case is when the item is contained under the multipart/related enclosure and // the item also has a "Content-Disposition" header indicating "attachment". // The location within multipart/related makes it a "related item", yet the Content-Disposition can also make it semantically an attachment. // Related items and attachments are not necessarily mutually exclusive. var numRelated: Int = email.numRelatedItems.intValue print("Number of related items = \(numRelated)") i = 0 while i < numRelated { print("---- Related Item \(i)") // Examine the filename (if any) print("filename: \(email.getRelatedFilename(i)!)") // Examine the content-ID (if any) print("Content-ID: \(email.getRelatedContentID(i)!)") // Examine the content-type print("Content-Type: \(email.getRelatedContentType(i)!)") // Examine the content-location (if any) print("Content-Location\(email.getRelatedContentLocation(i)!)") i = i + 1 } // The email could also have attached messages. // An attached message is another email that was attached to this email. var numAttachedMessages: Int = email.numAttachedMessages.intValue print("Number of attached messages = \(numAttachedMessages)") i = 0 while i < numAttachedMessages { print("---- Attached message \(i)") // Examine the attached email var em: CkoEmail? = email.getAttachedMessage(i) print("from: \(em!.from!)") print("subject: \(em!.subject!)") em = nil i = i + 1 } // An email could also be a multipart/report email. // This is a DSN (Delivery Status Notification) // The NumReports property indicates how many "reports" exist. var numReports: Int = email.numReports.intValue i = 0 print("Number of reports = \(numReports)") i = 0 while i < numReports { print("---- Report \(i)") // Get the raw report data... print("\(email.getReport(i)!)") i = i + 1 } // If the email is a multipart/report, then the information // from the message/delivery-status part of the email can be retrieved: if email.isMultipartReport() == true { print("--- Delivery Status Information:") print("Status: \(email.getDeliveryStatusInfo("Status")!)") print("Action: \(email.getDeliveryStatusInfo("Action")!)") print("Reporting-MTA: \(email.getDeliveryStatusInfo("Reporting-MTA")!)") var sa: CkoStringArray? = email.getDsnFinalRecipients() var numFinalRecipients: Int = sa!.count.intValue i = 0 while i < numFinalRecipients { print("final recipient: \(sa!.getString(i)!)") i = i + 1 } sa = nil } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.