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
(CkPython) 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.
import sys import chilkat # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. emlPath = "C:/AAWorkarea/beatrix/roesner.eml" mime = chilkat.CkMime() success = mime.LoadMimeFile(emlPath) if (success != True): print(mime.lastErrorText()) sys.exit() print("---- MIME structure ----") print(mime.getStructure("text")) print("------------------------") email = chilkat.CkEmail() 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: " + str(email.get_ReceivedSigned())) print("Email was Encrypted: " + str(email.get_ReceivedEncrypted())) if (email.get_ReceivedSigned() == True): print("Signature(s) valid = " + str(email.get_SignaturesValid())) if (email.get_ReceivedEncrypted() == True): print("Decrypted successfully = " + str(email.get_Decrypted())) i = 0 numAttach = email.get_NumAttachments() print("Number of attachments = " + str(numAttach)) while i < numAttach : print("---- Attachment " + str(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,"content-disposition")) # Examine the attachment size: print("Size (in bytes) of the attachment: " + str(email.GetAttachmentSize(i))) 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. numRelated = email.get_NumRelatedItems() print("Number of related items = " + str(numRelated)) i = 0 while i < numRelated : print("---- Related Item " + str(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. numAttachedMessages = email.get_NumAttachedMessages() print("Number of attached messages = " + str(numAttachedMessages)) i = 0 while i < numAttachedMessages : print("---- Attached message " + str(i)) # Examine the attached email # em is a CkEmail em = email.GetAttachedMessage(i) print("from: " + em.ck_from()) print("subject: " + em.subject()) 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. numReports = email.get_NumReports() i = 0 print("Number of reports = " + str(numReports)) i = 0 while i < numReports : print("---- Report " + str(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")) # sa is a CkStringArray sa = email.GetDsnFinalRecipients() numFinalRecipients = sa.get_Count() i = 0 while i < numFinalRecipients : print("final recipient: " + sa.getString(i)) i = i + 1 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.