You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaMail 1.6.0中Folder使用AutoCloseable出现抑制异常问题

这是JavaMail 1.6.0版本的原生Bug,和你的使用方式无关。

问题原因

JavaMail 1.6.0为Folder类实现AutoCloseable接口时,close()方法没有兼容「未打开的Folder」场景,没有像常规手动关闭逻辑那样先调用isOpen()判断状态,直接执行了仅打开状态允许的操作。只要你获取的Folder实例没有主动调用open()方法,自动资源管理触发close()时就会抛出IllegalStateException,作为被抑制异常附加到主异常上,你测试的两种场景均命中了这个逻辑。

你1.6.0版本之前手写的finally关闭逻辑是完全正确的,官方实现AutoCloseable的时候漏掉了isOpen()前置判断的步骤。

解决方案

  • 优先升级依赖:将com.sun.mail:javax.mail升级到1.6.1及以上版本即可。官方在1.6.1版本已经修复了这个问题,修复后的Folder.close()会先判断文件夹是否处于打开状态,未打开时直接返回不会抛异常。
  • 如果受环境限制无法升级版本,不要把Folder放到try-with-resources的资源声明中,继续沿用你之前的finally手动关闭逻辑即可。

内容的提问来源于stack exchange,提问作者Filou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:54:04