Похоже, ваша проблема в том, что getContent()
будет загружать контент с сервера, поскольку реализация JavaMail обычно сначала начинает загружать запрошенную информацию, когда вам это действительно нужно, например, вызывая getContent()
.
Вы можете заставить все загрузить полностью, прежде чем передать его в свой бизнес-код.Таким образом, вместо передачи объектов сообщений непосредственно из вашего технического класса, вы можете создать их копию.Это заставляет классы JavaMail, использующие, например, соединение IMAP, полностью загрузить ваше сообщение:
/* assuming you retrieved 'message' from your folder object */
Message copyOfMessage = new MimeMessage( (MimeMessage) message );
[..]
folder.close();
[..]
yourBusinessObject.getMail( copyOfMessage );
Но я должен признать, что никогда не пытался получить доступ к скопированному объекту после закрытия папки.И также никогда не использовал это с POP3.Но я бы попробовал.