javaapplication5.JavaApplication5.java Source code

Java tutorial

Introduction

Here is the source code for javaapplication5.JavaApplication5.java

Source

/*
 * 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("&lt"));
        //        //String presion = mensaje.substring(0, mensaje.indexOf("&lt"));
        //        //System.out.println("Presion " + presion);

    }

    public static void guardarXML(String[] datos) {

    }

}