开发者

JavaMail getConent after closing folder (folderClosedException)

开发者 https://www.devze.com 2023-02-18 18:07 出处:网络
Does anyone have experience with the Javamail javax.mail.FolderClosedException ? My problem is: I want to read some mails, everything ok. But i\'ve changed my reader class to a more technical class,

Does anyone have experience with the Javamail javax.mail.FolderClosedException ?

My problem is: I want to read some mails, everything ok. But i've changed my reader class to a more technical class, wich only gets the Message Objects.

In a second step i want to make beans. Getting the information like subject is very easy:

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

Main problem here: msg.getContent requires a opened folder... but my technical reader class gets all the message objects, closes the folder... after that my business-method getMail does the msg.getContent

is it possible to do that in that way w开发者_开发问答ith a business-class and a technical class, or do i have to setup the mail-beans in the technical class and return a list of them?!


Your problem seems to be that getContent() will load the content from the server, as the JavaMail implementation normally first begins to download the requested information, when you actually need it, e.g. by calling getContent().

You could kind of force to download everything completely before handing over the stuff to your business code. So, instead of handing over the message objects directly you get from your technical class, you can create a copy of them. This forces the JavaMail classes using e.g. an IMAP connection to fully download your message:

/* assuming you retrieved 'message' from your folder object */
Message copyOfMessage = new MimeMessage( (MimeMessage) message );
[..]
folder.close();
[..]
yourBusinessObject.getMail( copyOfMessage );

But I have to admit I have never tried to access the copied object after closing the folder. And also never used this with POP3. But I would give it a try.


How about just passing in the stuff you need, instead of the Message instance? Like

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

of course it's not as clean as before, but might do the trick ;)

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

0

精彩评论

暂无评论...
验证码 换一张
取 消