Я хочу получить доступ к сообщениям в GMail из приложения Java с помощью JavaMail и IMAP. Почему я получаю исключение SocketTimeoutException?
Вот мой код:
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);
}
Я устанавливаю значения тайм-аута так, чтобы он не принимал "навсегда" до тайм-аута. Кроме того, MyAuthenticator также имеет имя пользователя и пароль, что кажется лишним с URL-адресом. Есть ли другой способ указать протокол? (Я не видел его в JavaDoc для IMAP.)