Accediendo a Mailinator POP3 usando JavaMail

Estoy tratando de acceder a los mensajes de mailinators usando la API de JavaMail.

Puedo conectarme correctamente al servidor, etc., pero cuando se trata de leer un mensaje, sigo recibiendo la excepción "La carpeta no está abierta", y cuando compruebo si la carpeta está abierta y si no la abro, eso tampoco ayudará. Supongo que por alguna razón mailinator finaliza la conexión más o menos.

Si trato de obtener el flujo de entrada del mensaje en lugar de usar getContent, puedo leer bien el flujo de entrada y contiene el estilo del mensaje, etc. pero, por alguna razón, parece que los datos que leo del flujo de entrada no contienen el cuerpo del mensaje.

Si se trata de mailinator o podría ofrecerme cualquier otro servicio de lectura de correo electrónico aleatorio que admita pop3 u otro de fácil lectura, realmente no importa si uso mailinator para este proyecto.

Mi código de lectura de correo actual.

private void checkMail(String user) {
    Properties props = new Properties();
    Session session = Session.getDefaultInstance(props, null);
    try {
        Store store = session.getStore("pop3");
        store.connect("pop.mailinator.com", 110, user, "12345678");
        Folder inbox = store.getFolder("inbox");
        if(inbox == null) {
            System.out.println("no inbox");
        } else {
            inbox.open(Folder.READ_ONLY);
            for(Message message: inbox.getMessages()) {

                byte[] buffer = new byte[10000];

                int read = 0;

                try {

                    while((read = message.getInputStream().read(buffer, 0, 1024)) > 0) {
                        for(int i = 0; i < buffer.length; i++) {
                            System.out.print((char)buffer[i]);
                        }
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                /*try {
                    System.out.println(message.getContent().toString());
                } catch (IOException e) {
                    e.printStackTrace();
                }*/
            }
        }
        inbox.close(false);
        store.close();
    } catch (NoSuchProviderException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Además, cuando se lee desde el flujo de entrada, parece que el flujo de entrada nunca termina, solo comienza de nuevo. Mi propósito es obtener el cuerpo del mensaje y el asunto.

preguntado el 22 de mayo de 12 a las 17:05

2 Respuestas

Hace algún tiempo, Mailinator cambió el comportamiento, prohibiendo el acceso POP3 (o reservando solo para clientes de pago). Tal vez ese fue tu problema (si el código funcionó con otro proveedor de correo).

Respondido 06 Feb 16, 16:02

Si está leyendo el InputStream del mensaje, claramente la carpeta está abierta. ¿Cuándo recibe la excepción "La carpeta no está abierta"? Lo que hace el rastreo de protocolo ¿show? Puedes intentar usar gmail si cree que su servidor es el puerto del problema. Además, querrás arregla tu uso de getDefaultInstance.

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.