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
(Android™) IMAP Read PEC Email of Aruba and Extract the Invoice XML FilesIMAP Read PEC Email of Aruba and Extract the Invoice XML Files.
// Important: Don't forget to include the call to System.loadLibrary // as shown at the bottom of this code sample. package com.test; import android.app.Activity; import com.chilkatsoft.*; import android.widget.TextView; import android.os.Bundle; public class SimpleActivity extends Activity { private static final String TAG = "Chilkat"; // Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkImap imap = new CkImap(); // Connect using TLS. imap.put_Ssl(true); imap.put_Port(993); boolean success = imap.Connect("imap.example.com"); if (success == false) { Log.i(TAG, imap.lastErrorText()); return; } // Authenticate success = imap.Login("email_account_login","email_account_password"); if (success == false) { Log.i(TAG, imap.lastErrorText()); return; } // Select an IMAP mailbox success = imap.SelectMailbox("Inbox/postacert"); if (success == false) { Log.i(TAG, imap.lastErrorText()); return; } // Search for messages having "POSTA CERTIFICATA: Invio File" in the subject. boolean fetchUids = true; CkMessageSet messageSet = imap.Search("SUBJECT \"POSTA CERTIFICATA: Invio File\"",fetchUids); if (imap.get_LastMethodSuccess() == false) { Log.i(TAG, imap.lastErrorText()); return; } if (messageSet.get_Count() < 1) { Log.i(TAG, "No messages found."); return; } // For our example, we'll process only the 1st email in the messageSet. // Download the MIME source of the email into a StringBuilder object. CkEmail email = imap.FetchSingle(messageSet.GetId(0),messageSet.get_HasUids()); if (imap.get_LastMethodSuccess() == false) { Log.i(TAG, imap.lastErrorText()); return; } // The email should contain an attached email. // The Invoice XML is contained within the attached email. CkEmail attachedEmail = email.GetAttachedMessage(0); if (email.get_LastMethodSuccess() == false) { Log.i(TAG, email.lastErrorText()); return; } // Get the MIME of the attached email.. CkStringBuilder sbMime = new CkStringBuilder(); success = attachedEmail.GetMimeSb(sbMime); // Load it into a Chilkat MIME object. CkMime mime = new CkMime(); success = mime.LoadMimeSb(sbMime); // Examine the structure of the MIME. Log.i(TAG, 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 CkBinData bdP7m = new CkBinData(); // Get the 2nd sub-part, at index 1 because index 0 is the 1st sub-part. CkMime mimeP7m = mime.GetPart(1); if (mime.get_LastMethodSuccess() != true) { Log.i(TAG, "Failed to get 2nd sub-part. Perhaps the MIME does not have a 2nd sub-part?"); return; } success = mimeP7m.GetBodyBd(bdP7m); // Verify the signature, which also extracts the content contained within the opaque signature. CkCrypt2 crypt = new CkCrypt2(); success = crypt.OpaqueVerifyBd(bdP7m); if (success == false) { Log.i(TAG, crypt.lastErrorText()); return; } // The bdP7m now contains the Invoice XML. // Load it into an XML object. CkXml xml = new CkXml(); success = xml.LoadBd(bdP7m,true); Log.i(TAG, 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 Log.i(TAG, "success."); } static { System.loadLibrary("chilkat"); // Note: If the incorrect library name is passed to System.loadLibrary, // then you will see the following error message at application startup: //"The application <your-application-name> has stopped unexpectedly. Please try again." } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.