Obtener correo de GMail en la aplicación Java usando IMAP

Deseo acceder a mensajes en GMail desde una aplicación Java utilizando JavaMail e IMAP. ¿Por qué recibo una SocketTimeoutException ?

Aquí está mi código:

Properties props = System.getProperties();
props.setProperty("mail.imap.host", "imap.gmail.com");
props.setProperty("mail.imap.port", "993");
props.setProperty("mail.imap.connectiontimeout", "5000");
props.setProperty("mail.imap.timeout", "5000");

try {
    Session session = Session.getDefaultInstance(props, new MyAuthenticator());
    URLName urlName = new URLName("imap://[email protected]:[email protected]");
    Store store = session.getStore(urlName);
    if (!store.isConnected()) {
        store.connect();
    }
} catch (NoSuchProviderException e) {
    e.printStackTrace();
    System.exit(1);
} catch (MessagingException e) {
    e.printStackTrace();
    System.exit(2);
}

Establecí los valores de tiempo de espera para que no llevara "para siempre" el tiempo de espera. También, MyAuthenticator también tiene el nombre de usuario y la contraseña, lo que parece redundante con la URL. ¿Hay otra forma de especificar el protocolo? (No lo vi en JavaDoc para IMAP).

Respuestas a la pregunta(10)

Su respuesta a la pregunta