多线程的Javax邮件

标签 java imap smpp jakarta-mail

我正在开发一个 java 应用程序,它使用 attachemnts 获取并保存所有邮件。但我想用多线程来做。我的想法就是这样。

一个计时器线程正在获取所有邮件并将它们放入 BlockingQueue。我正在将 Javax.mail.Message 对象放入队列。然后我的工作线程正在获取并处理它们。

问题是当工作线程正在获取消息并调用方法时:

Message.getFolder.open();

Message.getFolder.close();

会导致问题。如果一个线程打开该文件夹而另一个线程尝试打开同一文件夹,应用程序将抛出不允许操作异常。

有人可以帮助我吗?

最佳答案

尝试 Folder.isOpen() - 指示此文件夹是否处于“打开”状态。 在打开它之前,例如

Folder folder = Message.getFolder();

if(folder.isOpen()==false){
folder.open();
}

同样在关闭之前,检查它是否已经打开然后才关闭:

  if(folder.isOpen()){
    folder.close();
  }

关于多线程的Javax邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088167/

相关文章:

java - 在 MySQL 中设计两个表以在 JPA 中使用

java - HTTP URL 连接响应

c++ - 寻找 Qt SMPP 客户端

java - SMPP:为submit_sm设置message_id

java - 如何使用 java.time.LocalDateTime 设置 jadira PersistentLocalDateTime?

java - 为什么我们使用带改造的调用列表

python - 解析附件名称的 IMAP 电子邮件 BODYSTRUCTURE

emacs - 使用 gmail imap 配置 gnus

php - 通过 PHP IMAP 连接到 Exchange 服务器,Exchange 服务器对 UNSEEN 电子邮件使用什么标志?

java - 使用 Query_sm (Smpp)