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
(Chilkat2-Python) IMAP Read PEC Email of Aruba and Extract the Invoice XML FilesIMAP Read PEC Email of Aruba and Extract the Invoice XML Files.
import sys import chilkat2 # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. imap = chilkat2.Imap() # Connect using TLS. imap.Ssl = True imap.Port = 993 success = imap.Connect("imap.example.com") if (success == False): print(imap.LastErrorText) sys.exit() # Authenticate success = imap.Login("email_account_login","email_account_password") if (success == False): print(imap.LastErrorText) sys.exit() # Select an IMAP mailbox success = imap.SelectMailbox("Inbox/postacert") if (success == False): print(imap.LastErrorText) sys.exit() # Search for messages having "POSTA CERTIFICATA: Invio File" in the subject. fetchUids = True # messageSet is a CkMessageSet messageSet = imap.Search("SUBJECT \"POSTA CERTIFICATA: Invio File\"",fetchUids) if (imap.LastMethodSuccess == False): print(imap.LastErrorText) sys.exit() if (messageSet.Count < 1): print("No messages found.") sys.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 is a CkEmail email = imap.FetchSingle(messageSet.GetId(0),messageSet.HasUids) if (imap.LastMethodSuccess == False): print(imap.LastErrorText) sys.exit() # The email should contain an attached email. # The Invoice XML is contained within the attached email. # attachedEmail is a CkEmail attachedEmail = email.GetAttachedMessage(0) if (email.LastMethodSuccess == False): print(email.LastErrorText) sys.exit() # Get the MIME of the attached email.. sbMime = chilkat2.StringBuilder() success = attachedEmail.GetMimeSb(sbMime) # Load it into a Chilkat MIME object. mime = chilkat2.Mime() success = mime.LoadMimeSb(sbMime) # Examine the structure of the MIME. print(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 bdP7m = chilkat2.BinData() # Get the 2nd sub-part, at index 1 because index 0 is the 1st sub-part. # mimeP7m is a CkMime mimeP7m = mime.GetPart(1) if (mime.LastMethodSuccess != True): print("Failed to get 2nd sub-part. Perhaps the MIME does not have a 2nd sub-part?") sys.exit() success = mimeP7m.GetBodyBd(bdP7m) # Verify the signature, which also extracts the content contained within the opaque signature. crypt = chilkat2.Crypt2() success = crypt.OpaqueVerifyBd(bdP7m) if (success == False): print(crypt.LastErrorText) sys.exit() # The bdP7m now contains the Invoice XML. # Load it into an XML object. xml = chilkat2.Xml() success = xml.LoadBd(bdP7m,True) print(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 print("success.") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.