Мое приложение должно отправлять электронную почту на разовой основе. Я использую javamail getDefaultSession и getTransport для отправки сообщения, и все работает как ожидалось.
Однако я заметил, что отправка может занять много времени - до семи секунд за отправку. Если я сломаю шаги, вот так:
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage( msg, addresses )
transport.close();
... Я вижу, что это вызов connect(), который принимает почти все время каждый раз.
Все примеры, которые я нашел, делают это - получить транспорт, подключиться, отправить, отключить. Но, конечно же, все примеры с одним выстрелом или отправка больших партий писем за один раз.
Я думал, что могу просто оставить соединение открытым, например:
Transport transport = session.getTransport("smtp");
if (!transport.isConnected())
transport.connect();
transport.sendMessage( msg, addresses )
(Здесь есть вариант: java mail storage Транспортный объект подключен).
Мне придется закрыть его в конце концов, в каком-то закрытии. И мне может потребоваться резервное копирование (если соединение было потеряно, но транспорт не понял). Но есть ли причина не просто оставить его открытым, как это во время срока службы приложения?
Спасибо, Аластер