JavaMail getConent после закрытия папки (folderClosedException) - PullRequest
1 голос
/ 18 марта 2011

У кого-нибудь есть опыт работы с Javamail javax.mail.FolderClosedException?

Моя проблема: я хочу прочитать несколько писем, все в порядке.Но я изменил свой класс читателя на более технический класс, который получает только Message Objects.

На втором шаге я хочу сделать бобы.Получить информацию, подобную теме, очень просто:

public void getMail(Message msg) {
   subject = msg.getSubject();
   ...
}

Основная проблема здесь: msg.getContent требует открытой папки ... но мой технический читатель получает все объекты сообщений, закрывает папку ... послечто мой бизнес-метод getMail выполняет msg.getContent

, возможно ли сделать это таким образом с бизнес-классом и техническим классом, или мне нужно настроить почтовые компоненты втехнический класс и вернуть их список?!

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Похоже, ваша проблема в том, что 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.Но я бы попробовал.

1 голос
/ 22 марта 2011

Как насчет передачи всего, что вам нужно, вместо экземпляра Message?Как и

public void getMail(String subject, Object content, ...) {
   ...
}

, конечно, он не такой чистый, как раньше, но может помочь;)

PS: Für d'IPA, oder hesch die dure?

...