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
(PowerBuilder) IMAP Read PEC Email of Aruba and Extract the Invoice XML FilesIMAP Read PEC Email of Aruba and Extract the Invoice XML Files.
integer li_rc oleobject loo_Imap integer li_Success integer li_FetchUids oleobject loo_MessageSet oleobject loo_Email oleobject loo_AttachedEmail oleobject loo_SbMime oleobject loo_Mime oleobject loo_BdP7m oleobject loo_MimeP7m oleobject loo_Crypt oleobject loo_Xml // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. loo_Imap = create oleobject // Use "Chilkat_9_5_0.Imap" for versions of Chilkat < 10.0.0 li_rc = loo_Imap.ConnectToNewObject("Chilkat.Imap") if li_rc < 0 then destroy loo_Imap MessageBox("Error","Connecting to COM object failed") return end if // Connect using TLS. loo_Imap.Ssl = 1 loo_Imap.Port = 993 li_Success = loo_Imap.Connect("imap.example.com") if li_Success = 0 then Write-Debug loo_Imap.LastErrorText destroy loo_Imap return end if // Authenticate li_Success = loo_Imap.Login("email_account_login","email_account_password") if li_Success = 0 then Write-Debug loo_Imap.LastErrorText destroy loo_Imap return end if // Select an IMAP mailbox li_Success = loo_Imap.SelectMailbox("Inbox/postacert") if li_Success = 0 then Write-Debug loo_Imap.LastErrorText destroy loo_Imap return end if // Search for messages having "POSTA CERTIFICATA: Invio File" in the subject. li_FetchUids = 1 loo_MessageSet = loo_Imap.Search("SUBJECT ~"POSTA CERTIFICATA: Invio File~"",li_FetchUids) if loo_Imap.LastMethodSuccess = 0 then Write-Debug loo_Imap.LastErrorText destroy loo_Imap return end if if loo_MessageSet.Count < 1 then Write-Debug "No messages found." destroy loo_MessageSet destroy loo_Imap return end if // For our example, we'll process only the 1st email in the messageSet. // Download the MIME source of the email into a StringBuilder object. loo_Email = loo_Imap.FetchSingle(loo_MessageSet.GetId(0),loo_MessageSet.HasUids) if loo_Imap.LastMethodSuccess = 0 then Write-Debug loo_Imap.LastErrorText destroy loo_MessageSet destroy loo_Imap return end if destroy loo_MessageSet // The email should contain an attached email. // The Invoice XML is contained within the attached email. loo_AttachedEmail = loo_Email.GetAttachedMessage(0) if loo_Email.LastMethodSuccess = 0 then Write-Debug loo_Email.LastErrorText destroy loo_Email destroy loo_Imap return end if destroy loo_Email // Get the MIME of the attached email.. loo_SbMime = create oleobject // Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 li_rc = loo_SbMime.ConnectToNewObject("Chilkat.StringBuilder") li_Success = loo_AttachedEmail.GetMimeSb(loo_SbMime) destroy loo_AttachedEmail // Load it into a Chilkat MIME object. loo_Mime = create oleobject // Use "Chilkat_9_5_0.Mime" for versions of Chilkat < 10.0.0 li_rc = loo_Mime.ConnectToNewObject("Chilkat.Mime") li_Success = loo_Mime.LoadMimeSb(loo_SbMime) // Examine the structure of the MIME. Write-Debug loo_Mime.GetStructure("text") // 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 loo_BdP7m = create oleobject // Use "Chilkat_9_5_0.BinData" for versions of Chilkat < 10.0.0 li_rc = loo_BdP7m.ConnectToNewObject("Chilkat.BinData") // Get the 2nd sub-part, at index 1 because index 0 is the 1st sub-part. loo_MimeP7m = loo_Mime.GetPart(1) if loo_Mime.LastMethodSuccess <> 1 then Write-Debug "Failed to get 2nd sub-part. Perhaps the MIME does not have a 2nd sub-part?" destroy loo_Imap destroy loo_SbMime destroy loo_Mime destroy loo_BdP7m return end if li_Success = loo_MimeP7m.GetBodyBd(loo_BdP7m) destroy loo_MimeP7m // Verify the signature, which also extracts the content contained within the opaque signature. loo_Crypt = create oleobject // Use "Chilkat_9_5_0.Crypt2" for versions of Chilkat < 10.0.0 li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2") li_Success = loo_Crypt.OpaqueVerifyBd(loo_BdP7m) if li_Success = 0 then Write-Debug loo_Crypt.LastErrorText destroy loo_Imap destroy loo_SbMime destroy loo_Mime destroy loo_BdP7m destroy loo_Crypt return end if // The bdP7m now contains the Invoice XML. // Load it into an XML object. loo_Xml = create oleobject // Use "Chilkat_9_5_0.Xml" for versions of Chilkat < 10.0.0 li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml") li_Success = loo_Xml.LoadBd(loo_BdP7m,1) Write-Debug loo_Xml.GetXml() // 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 Write-Debug "success." destroy loo_Imap destroy loo_SbMime destroy loo_Mime destroy loo_BdP7m destroy loo_Crypt destroy loo_Xml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.