
package lecturamail;

import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeBodyPart;

public class LecturaMail {

    public static void main(String[] args) {
        
        final String SERVIDORCORREO = "pop. SERVIDORCORREO.com";
        final String CUENTACORREO = "la.cuenta.destinataria@servidordestinatario.com";
        final String PASSWORDCORREO = "passworddestinatario";

        
        Properties properties = new Properties();
        properties.setProperty("mail.pop3.starttls.enable", "false");                               //deshabilitamos TLS.
        properties.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  // establecemos como obtener un socketSSL
        properties.setProperty("mail.pop3.socketFactory.fallback", "false");                        // establecemos que en caso de que falle el socketSSL no busque con un socket normal ya que no funcionaria, para email solo se admiten socketSSL
        properties.setProperty("mail.pop3.port", "995");                                            // establecemos el puerto de nuestro correo
        properties.setProperty("mail.pop3.socketFactory.port", "995");                              // puerto 
        Session sesion = Session.getInstance(properties); 
        // sesion.setDebug(true);

        try
        {  
            Store store = sesion.getStore("pop3");                                                                         
            store.connect(SERVIDORCORREO, CUENTACORREO, PASSWORDCORREO);
            Folder folder = store.getFolder("INBOX");                            // Obtenemos la carpeta de correo entrante 
            folder.open(Folder.READ_ONLY); 

            Message[] mensajes = folder.getMessages();
         
            for (int i = 0; i < mensajes.length; i++)
            {
                System.out.println("REMITENTE:  " + mensajes[i].getFrom()[0].toString());
                System.out.println("FECHA ENVIO:  " + mensajes[i].getSentDate());
                System.out.println("ASUNTO:  " + mensajes[i].getSubject());

                if (mensajes[i].isMimeType("multipart/*")) {                    
                    Multipart multiPart = (Multipart) mensajes[i].getContent();
                    for (int k=0; k<multiPart.getCount(); k++) {
                        MimeBodyPart  mimeBodyPart = (MimeBodyPart) multiPart.getBodyPart(k);
                        if (mimeBodyPart.isMimeType("text/plain"))               // también podría ser con el comodín * : "text/*" pero englobaria plain, html, ...
                            System.out.println("TEXTO:  " + mimeBodyPart.getContent().toString()); 
                    }
                }
                System.out.println("--------------------------------------------------------------");
            }

            folder.close(false);
            store.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }        
    } 
}
