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
(Objective-C) IMAP Read PEC Email of Aruba and Extract the Invoice XML FilesIMAP Read PEC Email of Aruba and Extract the Invoice XML Files.
#import <CkoImap.h> #import <CkoMessageSet.h> #import <CkoEmail.h> #import <CkoStringBuilder.h> #import <CkoMime.h> #import <CkoBinData.h> #import <CkoCrypt2.h> #import <CkoXml.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoImap *imap = [[CkoImap alloc] init]; // Connect using TLS. imap.Ssl = YES; imap.Port = [NSNumber numberWithInt:993]; BOOL success = [imap Connect: @"imap.example.com"]; if (success == NO) { NSLog(@"%@",imap.LastErrorText); return; } // Authenticate success = [imap Login: @"email_account_login" password: @"email_account_password"]; if (success == NO) { NSLog(@"%@",imap.LastErrorText); return; } // Select an IMAP mailbox success = [imap SelectMailbox: @"Inbox/postacert"]; if (success == NO) { NSLog(@"%@",imap.LastErrorText); return; } // Search for messages having "POSTA CERTIFICATA: Invio File" in the subject. BOOL fetchUids = YES; CkoMessageSet *messageSet = [imap Search: @"SUBJECT \"POSTA CERTIFICATA: Invio File\"" bUid: fetchUids]; if (imap.LastMethodSuccess == NO) { NSLog(@"%@",imap.LastErrorText); return; } if ([messageSet.Count intValue] < 1) { NSLog(@"%@",@"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. CkoEmail *email = [imap FetchSingle: [messageSet GetId: [NSNumber numberWithInt: 0]] bUid: messageSet.HasUids]; if (imap.LastMethodSuccess == NO) { NSLog(@"%@",imap.LastErrorText); return; } // The email should contain an attached email. // The Invoice XML is contained within the attached email. CkoEmail *attachedEmail = [email GetAttachedMessage: [NSNumber numberWithInt: 0]]; if (email.LastMethodSuccess == NO) { NSLog(@"%@",email.LastErrorText); return; } // Get the MIME of the attached email.. CkoStringBuilder *sbMime = [[CkoStringBuilder alloc] init]; success = [attachedEmail GetMimeSb: sbMime]; // Load it into a Chilkat MIME object. CkoMime *mime = [[CkoMime alloc] init]; success = [mime LoadMimeSb: sbMime]; // Examine the structure of the MIME. NSLog(@"%@",[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 CkoBinData *bdP7m = [[CkoBinData alloc] init]; // Get the 2nd sub-part, at index 1 because index 0 is the 1st sub-part. CkoMime *mimeP7m = [mime GetPart: [NSNumber numberWithInt: 1]]; if (mime.LastMethodSuccess != YES) { NSLog(@"%@",@"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. CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init]; success = [crypt OpaqueVerifyBd: bdP7m]; if (success == NO) { NSLog(@"%@",crypt.LastErrorText); return; } // The bdP7m now contains the Invoice XML. // Load it into an XML object. CkoXml *xml = [[CkoXml alloc] init]; success = [xml LoadBd: bdP7m autoTrim: YES]; NSLog(@"%@",[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 NSLog(@"%@",@"success."); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.