关闭文件夹后的JavaMail getConent(folderClosedException)

时间:2011-03-18 09:52:39

标签: java javamail shared-directory

有没有人有Javamail javax.mail.FolderClosedException的经验?

我的问题是: 我想读一些邮件,一切都好。但我已经将我的读者课程改为更技术性的课程,只获得了Message个对象。

第二步我想制作豆子。获取主题等信息非常简单:

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

此处的主要问题:msg.getContent需要打开的文件夹... 但我的技术读者类获取所有消息对象,关闭文件夹... 之后我的业务方法getMail执行msg.getContent

是否有可能以这种方式使用业务类和技术类,或者我是否必须在技术类中设置邮件bean并返回它们的列表?!

2 个答案:

答案 0 :(得分:2)

您的问题似乎是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 :(得分:1)

如果仅传递您需要的内容而不是Message实例?像

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

当然它不像以前那么干净,但可能会做到这一点;)

PS:Fürd'IPA,还是hesch死了吗?