Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(VB.NET UWP/WinRT) 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 = "C:/AAWorkarea/beatrix/roesner.eml" Dim mime As New Chilkat.Mime Dim success As Boolean = mime.LoadMimeFile(emlPath) If (success <> True) Then Debug.WriteLine(mime.LastErrorText) Exit Sub End If Debug.WriteLine("---- MIME structure ----") Debug.WriteLine(mime.GetStructure("text")) Debug.WriteLine("------------------------") 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. Debug.WriteLine("Email was Signed: " & email.ReceivedSigned) Debug.WriteLine("Email was Encrypted: " & email.ReceivedEncrypted) If (email.ReceivedSigned = True) Then Debug.WriteLine("Signature(s) valid = " & email.SignaturesValid) End If If (email.ReceivedEncrypted = True) Then Debug.WriteLine("Decrypted successfully = " & email.Decrypted) End If Dim i As Integer = 0 Dim numAttach As Integer = email.NumAttachments Debug.WriteLine("Number of attachments = " & numAttach) While i < numAttach Debug.WriteLine("---- Attachment " & i) ' Examine the filename (if any) Debug.WriteLine("filename: " & email.GetAttachmentFilename(i)) ' Examine the content-ID (if any) Debug.WriteLine("Content-ID: " & email.GetAttachmentContentID(i)) ' Examine the content-type Debug.WriteLine("Content-Type: " & email.GetAttachmentContentType(i)) ' Examine the content-disposition Debug.WriteLine("Content-Disposition" & email.GetAttachmentHeader(i,"content-disposition")) ' Examine the attachment size: Debug.WriteLine("Size (in bytes) of the attachment: " & email.GetAttachmentSize(i)) i = i + 1 End While Debug.WriteLine("--") ' 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 Integer = email.NumRelatedItems Debug.WriteLine("Number of related items = " & numRelated) i = 0 While i < numRelated Debug.WriteLine("---- Related Item " & i) ' Examine the filename (if any) Debug.WriteLine("filename: " & email.GetRelatedFilename(i)) ' Examine the content-ID (if any) Debug.WriteLine("Content-ID: " & email.GetRelatedContentID(i)) ' Examine the content-type Debug.WriteLine("Content-Type: " & email.GetRelatedContentType(i)) ' Examine the content-location (if any) Debug.WriteLine("Content-Location" & email.GetRelatedContentLocation(i)) i = i + 1 End While ' The email could also have attached messages. ' An attached message is another email that was attached to this email. Dim numAttachedMessages As Integer = email.NumAttachedMessages Debug.WriteLine("Number of attached messages = " & numAttachedMessages) i = 0 While i < numAttachedMessages Debug.WriteLine("---- Attached message " & i) ' Examine the attached email Dim em As Chilkat.Email = email.GetAttachedMessage(i) Debug.WriteLine("from: " & em.From) Debug.WriteLine("subject: " & em.Subject) i = i + 1 End While ' 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 Integer = email.NumReports i = 0 Debug.WriteLine("Number of reports = " & numReports) i = 0 While i < numReports Debug.WriteLine("---- Report " & i) ' Get the raw report data... Debug.WriteLine(email.GetReport(i)) i = i + 1 End While ' 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 Debug.WriteLine("--- Delivery Status Information:") Debug.WriteLine("Status: " & email.GetDeliveryStatusInfo("Status")) Debug.WriteLine("Action: " & email.GetDeliveryStatusInfo("Action")) Debug.WriteLine("Reporting-MTA: " & email.GetDeliveryStatusInfo("Reporting-MTA")) Dim sa As Chilkat.StringArray = email.GetDsnFinalRecipients() Dim numFinalRecipients As Integer = sa.Count i = 0 While i < numFinalRecipients Debug.WriteLine("final recipient: " & sa.GetString(i)) i = i + 1 End While End If |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.