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
(PHP Extension) 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.
<?php // The version number (9_5_0) should match version of the Chilkat extension used, omitting the micro-version number. // For example, if using Chilkat v9.5.0.48, then include as shown here: include("chilkat_9_5_0.php"); // 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 = new CkMime(); $success = $mime->LoadMimeFile($emlPath); if ($success != true) { print $mime->lastErrorText() . "\n"; exit; } print '---- MIME structure ----' . "\n"; print $mime->getStructure('text') . "\n"; print '------------------------' . "\n"; $email = new 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: ' . $email->get_ReceivedSigned() . "\n"; print 'Email was Encrypted: ' . $email->get_ReceivedEncrypted() . "\n"; if ($email->get_ReceivedSigned() == true) { print 'Signature(s) valid = ' . $email->get_SignaturesValid() . "\n"; } if ($email->get_ReceivedEncrypted() == true) { print 'Decrypted successfully = ' . $email->get_Decrypted() . "\n"; } $i = 0; $numAttach = $email->get_NumAttachments(); print 'Number of attachments = ' . $numAttach . "\n"; while ($i < $numAttach) { print '---- Attachment ' . $i . "\n"; // Examine the filename (if any) print 'filename: ' . $email->getAttachmentFilename($i) . "\n"; // Examine the content-ID (if any) print 'Content-ID: ' . $email->getAttachmentContentID($i) . "\n"; // Examine the content-type print 'Content-Type: ' . $email->getAttachmentContentType($i) . "\n"; // Examine the content-disposition print 'Content-Disposition' . $email->getAttachmentHeader($i,'content-disposition') . "\n"; // Examine the attachment size: print 'Size (in bytes) of the attachment: ' . $email->GetAttachmentSize($i) . "\n"; $i = $i + 1; } print '--' . "\n"; // 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 = ' . $numRelated . "\n"; $i = 0; while ($i < $numRelated) { print '---- Related Item ' . $i . "\n"; // Examine the filename (if any) print 'filename: ' . $email->getRelatedFilename($i) . "\n"; // Examine the content-ID (if any) print 'Content-ID: ' . $email->getRelatedContentID($i) . "\n"; // Examine the content-type print 'Content-Type: ' . $email->getRelatedContentType($i) . "\n"; // Examine the content-location (if any) print 'Content-Location' . $email->getRelatedContentLocation($i) . "\n"; $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 = ' . $numAttachedMessages . "\n"; $i = 0; while ($i < $numAttachedMessages) { print '---- Attached message ' . $i . "\n"; // Examine the attached email // em is a CkEmail $em = $email->GetAttachedMessage($i); print 'from: ' . $em->from() . "\n"; print 'subject: ' . $em->subject() . "\n"; $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 = ' . $numReports . "\n"; $i = 0; while ($i < $numReports) { print '---- Report ' . $i . "\n"; // Get the raw report data... print $email->getReport($i) . "\n"; $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:' . "\n"; print 'Status: ' . $email->getDeliveryStatusInfo('Status') . "\n"; print 'Action: ' . $email->getDeliveryStatusInfo('Action') . "\n"; print 'Reporting-MTA: ' . $email->getDeliveryStatusInfo('Reporting-MTA') . "\n"; // sa is a CkStringArray $sa = $email->GetDsnFinalRecipients(); $numFinalRecipients = $sa->get_Count(); $i = 0; while ($i < $numFinalRecipients) { print 'final recipient: ' . $sa->getString($i) . "\n"; $i = $i + 1; } } ?> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.