Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javaapplication5; import java.io.File; import java.io.IOException; import java.util.List; import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Session; import javax.mail.Store; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.jdom2.*; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.internet.MimeMultipart; import org.jsoup.Jsoup; /** * * @author MatiMore */ public class JavaApplication5 { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { // mail server connection parameters String host = "pop.gmail.com"; String user = "easytogo.viajescompartidos"; String password = "proyecto2015"; // connect to my pop3 inbox Properties properties = System.getProperties(); Session session = Session.getDefaultInstance(properties); properties.put("mail.pop3.ssl.enable", "true"); // Use SSL properties.put("mail.pop3.port", 995); properties.put("mail.pop3.socketFactory", 995); properties.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); properties.put("mail.pop3.connectiontimeout", 120000); Store store = session.getStore("pop3"); store.connect(host, 995, user, password); Folder inbox = store.getFolder("Inbox"); inbox.open(Folder.READ_ONLY); // get the list of inbox messages Message[] messages = inbox.getMessages(); if (messages.length == 0) { System.out.println("No hay mensajes en el buzon de entrada"); } //itera entre todos los mails del buzon sin leer for (int i = 0; i < messages.length; i++) { // stop after listing ten messages if (i > 10) { System.exit(0); inbox.close(true); store.close(); } //CHECKEA QUE EL MAIL ESTE EN LA LISTA BLANCA: //obtiene el from de cada mensaje de la forma Matias Moreno <matias.morenor@gmail.com> String from = messages[i].getFrom()[0].toString(); //dejamos solo el mail para comparar con el xml de los remitentes validos if (from.contains("<")) { from = from.substring(from.indexOf("<") + 1, from.length() - 1); } //checkea que el remitente de cada mensaje este en la lista blanca (xml) if (checkRemitente(from)) { System.out.println("El remitente esta en la lista blanca"); //deberia llamar a un metodo para tratar el body del mje System.out.println(getBodyFromMessage(messages[i])); String mensaje = getBodyFromMessage(messages[i]); String datosMail[] = parsearMail(mensaje); guardarXML(datosMail); } else { System.out.println("El remitente NO esta en la lista blanca"); } // System.out.println("Message " + (i + 1)); // System.out.println("From : " + messages[i].getFrom()[0]); // System.out.println("Subject : " + messages[i].getSubject()); // System.out.println("Sent Date : " + messages[i].getSentDate()); // System.out.println("Mensaje : " + messages[i].getContent().toString()); // messages[i].writeTo(System.out); // System.out.println(); } inbox.close(true); store.close(); } public static Boolean checkRemitente(String from) throws JDOMException, IOException { boolean resultado = false; //Se crea un SAXBuilder para poder parsear el archivo SAXBuilder builder = new SAXBuilder(); //Traigo el XML de remitentes validos File xmlFile = new File( "C:\\Users\\Matias\\Documents\\NetBeansProjects\\Repo\\JavaApplication5\\src\\javaapplication5\\remitentes.xml"); //Se crea el documento a traves del archivo Document document = (Document) builder.build(xmlFile); //Se obtiene la raiz 'remitentes' Element rootNode = document.getRootElement(); //Se obtiene la lista de hijos de la raiz 'remitentes' List list = rootNode.getChildren(); //Se recorre la lista de hijos de 'remitentes' for (int i = 0; i < list.size(); i++) { //por cada remitente Element remitente = (Element) list.get(i); String rem = remitente.getText(); //si el remitente q me vino del mail esta en el XML pone en true la variable resultado if (from.equals(rem)) { resultado = true; return (resultado); } } return resultado; } private static String getBodyFromMessage(Message message) throws Exception { if (message.isMimeType("text/plain")) { return message.getContent().toString(); } else if (message.isMimeType("multipart/*")) { String result = ""; MimeMultipart mimeMultipart = (MimeMultipart) message.getContent(); int count = mimeMultipart.getCount(); for (int i = 0; i < count; i++) { BodyPart bodyPart = mimeMultipart.getBodyPart(i); if (bodyPart.isMimeType("text/plain")) { result = result + "\n" + bodyPart.getContent(); break; //without break same text appears twice in my tests } else if (bodyPart.isMimeType("text/html")) { String html = (String) bodyPart.getContent(); result = result + "\n" + Jsoup.parse(html).text(); } } return result; } return ""; } public static String[] parsearMail(String mensaje) { System.out.println("lengh " + mensaje.length()); if (mensaje.contains(">")) { mensaje = mensaje.substring(mensaje.indexOf(">") + 1, mensaje.length() - 3); System.out.println("Mensaje sin picos " + mensaje); } String[] partesTrama = mensaje.split(";"); String timeStamp = partesTrama[0]; String temperatura = partesTrama[1]; String tension = partesTrama[2]; String corriente = partesTrama[3]; String potencia = partesTrama[4]; String presion = partesTrama[5]; System.out.println("TimeStamp " + timeStamp); System.out.println("Temperatura: " + temperatura); System.out.println("Tension " + tension); System.out.println("Corriente " + corriente); System.out.println("Potencia " + potencia); System.out.println("Presion " + presion); return partesTrama; // // mensaje = mensaje.substring(2); // //System.out.println("substring(1)"+mensaje); // String timeStamp = mensaje.substring(2, mensaje.indexOf(";")); // System.out.println("timestamp " + timeStamp); // // mensaje = mensaje.substring(mensaje.indexOf(";") + 1); // //System.out.println("primer substring "+mensaje); // String temperatura = mensaje.substring(0, mensaje.indexOf(";")); // System.out.println("temperatura " + temperatura); // // mensaje = mensaje.substring(mensaje.indexOf(";") + 1); // //System.out.println("el de tension substring "+mensaje); // String tension = mensaje.substring(0, mensaje.indexOf(";")); // System.out.println("tension " + tension); // // mensaje = mensaje.substring(mensaje.indexOf(";") + 1); // String corriente = mensaje.substring(0, mensaje.indexOf(";")); // System.out.println("Corriente " + corriente); // mensaje = mensaje.substring(mensaje.indexOf(";") + 1); // String potencia = mensaje.substring(0, mensaje.indexOf(";")); // System.out.println("Potencia " + potencia); // mensaje = mensaje.substring(mensaje.indexOf(";") + 1); // System.out.println("ultima cadena " + mensaje); // System.out.println("indexof "+ mensaje.indexOf("<")); // //String presion = mensaje.substring(0, mensaje.indexOf("<")); // //System.out.println("Presion " + presion); } public static void guardarXML(String[] datos) { } }