В настоящее время я пытаюсь использовать JavaMail для получения электронной почты с серверов IMAP (Gmail и других). В принципе, мой код работает: я действительно могу получить заголовки, содержимое тела и так далее. Моя проблема заключается в следующем: при работе на сервере IMAP (без SSL) в основном требуется 1-2 мс для обработки сообщения. Когда я иду на сервер IMAPS (следовательно, с помощью SSL, например Gmail), я достигаю 250 м/сообщение. Я ТОЛЬКО измеряю время обработки сообщений (соединение, рукопожатие и т.д. НЕ принимаются во внимание).
Я знаю, что, поскольку это SSL, данные шифруются. Однако время для расшифровки не должно быть таким важным, не так ли?
Я попытался установить более высокое значение ServerCacheSize, более высокий connectionpoolsize, но у меня действительно заканчиваются идеи. Кто-нибудь столкнулся с этой проблемой? Решил ли это, что можно надеяться?
Я боюсь, что API JavaMail использует другое соединение каждый раз, когда он извлекает почту с сервера IMAPS (с использованием накладных расходов для рукопожатия...). Если да, существует ли способ отменить это поведение?
Вот мой код (хотя вполне стандартный), вызванный из класса Main():
public static int connectTest(String SSL, String user, String pwd, String host) throws IOException,
ProtocolException,
GeneralSecurityException {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", SSL);
props.setProperty("mail.imaps.ssl.trust", host);
props.setProperty("mail.imaps.connectionpoolsize", "10");
try {
Session session = Session.getDefaultInstance(props, null);
// session.setDebug(true);
Store store = session.getStore(SSL);
store.connect(host, user, pwd);
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
int numMess = inbox.getMessageCount();
Message[] messages = inbox.getMessages();
for (Message m : messages) {
m.getAllHeaders();
m.getContent();
}
inbox.close(false);
store.close();
return numMess;
} catch (MessagingException e) {
e.printStackTrace();
System.exit(2);
}
return 0;
}
Спасибо заранее.