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
(Xojo Plugin) 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.
// This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Dim emlPath As String emlPath = "C:/AAWorkarea/beatrix/roesner.eml" Dim mime As New Chilkat.Mime Dim success As Boolean success = mime.LoadMimeFile(emlPath) If (success <> True) Then System.DebugLog(mime.LastErrorText) Return End If System.DebugLog("---- MIME structure ----") System.DebugLog(mime.GetStructure("text")) System.DebugLog("------------------------") Dim email As New Chilkat.Email 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. System.DebugLog("Email was Signed: " + Str(email.ReceivedSigned)) System.DebugLog("Email was Encrypted: " + Str(email.ReceivedEncrypted)) If (email.ReceivedSigned = True) Then System.DebugLog("Signature(s) valid = " + Str(email.SignaturesValid)) End If If (email.ReceivedEncrypted = True) Then System.DebugLog("Decrypted successfully = " + Str(email.Decrypted)) End If Dim i As Int32 i = 0 Dim numAttach As Int32 numAttach = email.NumAttachments System.DebugLog("Number of attachments = " + Str(numAttach)) While i < numAttach System.DebugLog("---- Attachment " + Str(i)) // Examine the filename (if any) System.DebugLog("filename: " + email.GetAttachmentFilename(i)) // Examine the content-ID (if any) System.DebugLog("Content-ID: " + email.GetAttachmentContentID(i)) // Examine the content-type System.DebugLog("Content-Type: " + email.GetAttachmentContentType(i)) // Examine the content-disposition System.DebugLog("Content-Disposition" + email.GetAttachmentHeader(i,"content-disposition")) // Examine the attachment size: System.DebugLog("Size (in bytes) of the attachment: " + Str(email.GetAttachmentSize(i))) i = i + 1 Wend System.DebugLog("--") // 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. Dim numRelated As Int32 numRelated = email.NumRelatedItems System.DebugLog("Number of related items = " + Str(numRelated)) i = 0 While i < numRelated System.DebugLog("---- Related Item " + Str(i)) // Examine the filename (if any) System.DebugLog("filename: " + email.GetRelatedFilename(i)) // Examine the content-ID (if any) System.DebugLog("Content-ID: " + email.GetRelatedContentID(i)) // Examine the content-type System.DebugLog("Content-Type: " + email.GetRelatedContentType(i)) // Examine the content-location (if any) System.DebugLog("Content-Location" + email.GetRelatedContentLocation(i)) i = i + 1 Wend // The email could also have attached messages. // An attached message is another email that was attached to this email. Dim numAttachedMessages As Int32 numAttachedMessages = email.NumAttachedMessages System.DebugLog("Number of attached messages = " + Str(numAttachedMessages)) i = 0 While i < numAttachedMessages System.DebugLog("---- Attached message " + Str(i)) // Examine the attached email Dim em As Chilkat.Email em = email.GetAttachedMessage(i) System.DebugLog("from: " + em.From) System.DebugLog("subject: " + em.Subject) i = i + 1 Wend // An email could also be a multipart/report email. // This is a DSN (Delivery Status Notification) // The NumReports property indicates how many "reports" exist. Dim numReports As Int32 numReports = email.NumReports i = 0 System.DebugLog("Number of reports = " + Str(numReports)) i = 0 While i < numReports System.DebugLog("---- Report " + Str(i)) // Get the raw report data... System.DebugLog(email.GetReport(i)) i = i + 1 Wend // 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) Then System.DebugLog("--- Delivery Status Information:") System.DebugLog("Status: " + email.GetDeliveryStatusInfo("Status")) System.DebugLog("Action: " + email.GetDeliveryStatusInfo("Action")) System.DebugLog("Reporting-MTA: " + email.GetDeliveryStatusInfo("Reporting-MTA")) Dim sa As Chilkat.StringArray sa = email.GetDsnFinalRecipients() Dim numFinalRecipients As Int32 numFinalRecipients = sa.Count i = 0 While i < numFinalRecipients System.DebugLog("final recipient: " + sa.GetString(i)) i = i + 1 Wend End If |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.