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
(AutoIt) 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. Local $sEmlPath = "C:/AAWorkarea/beatrix/roesner.eml" $oMime = ObjCreate("Chilkat.Mime") Local $bSuccess = $oMime.LoadMimeFile($sEmlPath) If ($bSuccess <> True) Then ConsoleWrite($oMime.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("---- MIME structure ----" & @CRLF) ConsoleWrite($oMime.GetStructure("text") & @CRLF) ConsoleWrite("------------------------" & @CRLF) $oEmail = ObjCreate("Chilkat.Email") $bSuccess = $oEmail.LoadEml($sEmlPath) ; 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. ConsoleWrite("Email was Signed: " & $oEmail.ReceivedSigned & @CRLF) ConsoleWrite("Email was Encrypted: " & $oEmail.ReceivedEncrypted & @CRLF) If ($oEmail.ReceivedSigned = True) Then ConsoleWrite("Signature(s) valid = " & $oEmail.SignaturesValid & @CRLF) EndIf If ($oEmail.ReceivedEncrypted = True) Then ConsoleWrite("Decrypted successfully = " & $oEmail.Decrypted & @CRLF) EndIf Local $i = 0 Local $iNumAttach = $oEmail.NumAttachments ConsoleWrite("Number of attachments = " & $iNumAttach & @CRLF) While $i < $iNumAttach ConsoleWrite("---- Attachment " & $i & @CRLF) ; Examine the filename (if any) ConsoleWrite("filename: " & $oEmail.GetAttachmentFilename($i) & @CRLF) ; Examine the content-ID (if any) ConsoleWrite("Content-ID: " & $oEmail.GetAttachmentContentID($i) & @CRLF) ; Examine the content-type ConsoleWrite("Content-Type: " & $oEmail.GetAttachmentContentType($i) & @CRLF) ; Examine the content-disposition ConsoleWrite("Content-Disposition" & $oEmail.GetAttachmentHeader($i,"content-disposition") & @CRLF) ; Examine the attachment size: ConsoleWrite("Size (in bytes) of the attachment: " & $oEmail.GetAttachmentSize($i) & @CRLF) $i = $i + 1 Wend ConsoleWrite("--" & @CRLF) ; 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. Local $iNumRelated = $oEmail.NumRelatedItems ConsoleWrite("Number of related items = " & $iNumRelated & @CRLF) $i = 0 While $i < $iNumRelated ConsoleWrite("---- Related Item " & $i & @CRLF) ; Examine the filename (if any) ConsoleWrite("filename: " & $oEmail.GetRelatedFilename($i) & @CRLF) ; Examine the content-ID (if any) ConsoleWrite("Content-ID: " & $oEmail.GetRelatedContentID($i) & @CRLF) ; Examine the content-type ConsoleWrite("Content-Type: " & $oEmail.GetRelatedContentType($i) & @CRLF) ; Examine the content-location (if any) ConsoleWrite("Content-Location" & $oEmail.GetRelatedContentLocation($i) & @CRLF) $i = $i + 1 Wend ; The email could also have attached messages. ; An attached message is another email that was attached to this email. Local $iNumAttachedMessages = $oEmail.NumAttachedMessages ConsoleWrite("Number of attached messages = " & $iNumAttachedMessages & @CRLF) $i = 0 While $i < $iNumAttachedMessages ConsoleWrite("---- Attached message " & $i & @CRLF) ; Examine the attached email Local $oEm = $oEmail.GetAttachedMessage($i) ConsoleWrite("from: " & $oEm.From & @CRLF) ConsoleWrite("subject: " & $oEm.Subject & @CRLF) $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. Local $iNumReports = $oEmail.NumReports ConsoleWrite("Number of reports = " & $iNumReports & @CRLF) $i = 0 While $i < $iNumReports ConsoleWrite("---- Report " & $i & @CRLF) ; Get the raw report data... ConsoleWrite($oEmail.GetReport($i) & @CRLF) $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 ($oEmail.IsMultipartReport() = True) Then ConsoleWrite("--- Delivery Status Information:" & @CRLF) ConsoleWrite("Status: " & $oEmail.GetDeliveryStatusInfo("Status") & @CRLF) ConsoleWrite("Action: " & $oEmail.GetDeliveryStatusInfo("Action") & @CRLF) ConsoleWrite("Reporting-MTA: " & $oEmail.GetDeliveryStatusInfo("Reporting-MTA") & @CRLF) Local $oSa = $oEmail.GetDsnFinalRecipients() Local $iNumFinalRecipients = $oSa.Count $i = 0 While $i < $iNumFinalRecipients ConsoleWrite("final recipient: " & $oSa.GetString($i) & @CRLF) $i = $i + 1 Wend EndIf |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.