|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (Perl) IMAP Read PEC Email of Aruba and Extract the Invoice XML FilesIMAP Read PEC Email of Aruba and Extract the Invoice XML Files. Note: This example requires Chilkat v11.0.0 or greater. 
 use chilkat(); $success = 0; # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $imap = chilkat::CkImap->new(); # Connect using TLS. $imap->put_Ssl(1); $imap->put_Port(993); $success = $imap->Connect("imap.example.com"); if ($success == 0) { print $imap->lastErrorText() . "\r\n"; exit; } # Authenticate $success = $imap->Login("email_account_login","email_account_password"); if ($success == 0) { print $imap->lastErrorText() . "\r\n"; exit; } # Select an IMAP mailbox $success = $imap->SelectMailbox("Inbox/postacert"); if ($success == 0) { print $imap->lastErrorText() . "\r\n"; exit; } # Search for messages having "POSTA CERTIFICATA: Invio File" in the subject. $fetchUids = 1; $messageSet = chilkat::CkMessageSet->new(); $success = $imap->QueryMbx("SUBJECT \"POSTA CERTIFICATA: Invio File\"",$fetchUids,$messageSet); if ($success == 0) { print $imap->lastErrorText() . "\r\n"; exit; } if ($messageSet->get_Count() < 1) { print "No messages found." . "\r\n"; exit; } # For our example, we'll process only the 1st email in the messageSet. # Download the MIME source of the email into a StringBuilder object. $email = chilkat::CkEmail->new(); $success = $imap->FetchEmail(0,$messageSet->GetId(0),$messageSet->get_HasUids(),$email); if ($success == 0) { print $imap->lastErrorText() . "\r\n"; exit; } # The email should contain an attached email. # The Invoice XML is contained within the attached email. $attachedEmail = chilkat::CkEmail->new(); $success = $email->GetAttachedEmail(0,$attachedEmail); if ($success == 0) { print $email->lastErrorText() . "\r\n"; exit; } # Get the MIME of the attached email.. $sbMime = chilkat::CkStringBuilder->new(); $success = $attachedEmail->GetMimeSb($sbMime); # Load it into a Chilkat MIME object. $mime = chilkat::CkMime->new(); $success = $mime->LoadMimeSb($sbMime); # Examine the structure of the MIME. print $mime->getStructure("text") . "\r\n"; # The MIME has this structure: # multipart/mixed # application/octet-stream # application/octet-stream <-- This is where the XML is contained. It is within an opaque signature. # text/plain # The 2nd application/octet-stream MIME header looks like this: # ------=_Part_329673_-1348225228.1579889273592 # Content-Type: application/octet-stream; name="SM99999_99aaa.xml.p7m" # Content-Transfer-Encoding: base64 # Content-Disposition: attachment; filename="SM99999_99aaa.xml.p7m" # Let's get the binary content of the .p7m $bdP7m = chilkat::CkBinData->new(); # Get the 2nd sub-part, at index 1 because index 0 is the 1st sub-part. $mimeP7m = chilkat::CkMime->new(); $success = $mime->PartAt(1,$mimeP7m); if ($success == 0) { print $mime->lastErrorText() . "\r\n"; exit; } if ($mime->get_LastMethodSuccess() != 1) { print "Failed to get 2nd sub-part. Perhaps the MIME does not have a 2nd sub-part?" . "\r\n"; exit; } $success = $mimeP7m->GetBodyBd($bdP7m); # Verify the signature, which also extracts the content contained within the opaque signature. $crypt = chilkat::CkCrypt2->new(); $success = $crypt->OpaqueVerifyBd($bdP7m); if ($success == 0) { print $crypt->lastErrorText() . "\r\n"; exit; } # The bdP7m now contains the Invoice XML. # Load it into an XML object. $xml = chilkat::CkXml->new(); $success = $xml->LoadBd($bdP7m,1); print $xml->getXml() . "\r\n"; # We have XML such as the following: # # <?xml version="1.0" encoding="windows-1252"?> # <?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl"?> # <p:FatturaElettronica versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" # xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" # xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> # <FatturaElettronicaHeader> # ... # </FatturaElettronicaHeader> # <FatturaElettronicaBody> # ... # </FatturaElettronicaBody> # </p:FatturaElettronica> # Use this online tool to generate parsing code from sample XML: # Generate Parsing Code from XML print "success." . "\r\n"; | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.