Javamail appendMessages引发IOException无内容
我正在尝试将邮件从一个IMAP存储复制到另一个IMAP存储 执行实际复制的代码行为:Javamail appendMessages引发IOException无内容,java,jakarta-mail,Java,Jakarta Mail,我正在尝试将邮件从一个IMAP存储复制到另一个IMAP存储 执行实际复制的代码行为: folder.appendMessages(new Message[] { m }); 大多数邮件复制都没有问题,但有些邮件复制失败: javax.mail.MessagingException: IOException while appending messages; nested exception is: java.io.IOException: No content 堆栈跟踪指向 在我
folder.appendMessages(new Message[] { m });
大多数邮件复制都没有问题,但有些邮件复制失败:
javax.mail.MessagingException: IOException while appending messages;
nested exception is:
java.io.IOException: No content
堆栈跟踪指向
在我的测试用例中,成功复制的一些消息大到6MB,而失败的一些消息小到16KB,所以这不是大小问题
我不确定,但失败的消息可能有附件。在失败的消息组和成功的消息组中都找到了内容类型multipart/ALTERNATIVE
在邮件客户端(如Thunderbird)中打开失败的邮件可以正常工作,因此邮件不会损坏
更新:
mail.imap.fetchsize
与此问题有关。当默认值为16384B时,在1000条消息的样本上运行时,最小的失败消息为16432B,略大于fetchsize
当我将其增加到65536b时——同一样本中最小的失败消息是65787b——再次稍微超过了fetchsize
大小为16432B的消息在默认fetchsize下始终失败,但在较高的fetchsize下复制成功,因此这肯定是一个问题
知道是什么导致了这个问题吗 有此问题时如何复制邮件 蒂亚
p、 根据我们的离线讨论,我正在使用Java1.7u71和Javamail 1.5.2,将
mail.imap.partialfetch
属性设置为false
会使它工作。当这种情况发生时,几乎总是因为服务器以某种方式损坏
另见:
在“已知限制、缺陷和问题列表”第4节和第5节下
该错误已在Java Mail 1.6中修复
这将有助于保持健康。这可能是其中一个邮件服务器中的错误。您使用的是什么邮件服务器?在将邮件附加到其他存储/文件夹之前,您是否对邮件做了任何处理?@BillShannon-感谢您及时关注此问题。我已将失败消息的调试输出粘贴到--此消息在Thunderbird中正确打开时始终失败。为了回答您的其他问题,服务器为modusMail IMAP4S 4.5.654.0(根据调试输出),我不会对消息执行任何操作。我只需在
源服务器
上迭代消息,对于每条消息,我确保它不存在于目标服务器
a-lagetMessageId()
,如果它不存在,我调用appendMessages()
如上问题所述。@BillShannon-mail.imap.fetchsize
在这里起作用。请参阅上面问题中的更新。我们可能需要将此调试脱机。请通过javamail与我联系_ww@oracle.com. 我在调试输出中没有看到任何明显的错误。在附加消息之前,是否可以添加m.writeTo(newfileoutputstream(“msg.txt”);看看这是否也会产生“无内容”例外?谢谢比尔的大力帮助!我编辑了你的答案以包含参考链接。