Javamail appendMessages 抛出 IOException 无内容
Javamail appendMessages throws IOException No Content
我正在尝试将邮件从一个 IMAP 存储复制到另一个。
执行实际复制的代码行是:
folder.appendMessages(new Message[] { m });
大多数邮件复制没有问题,但有些邮件复制失败:
javax.mail.MessagingException: IOException while appending messages;
nested exception is:
java.io.IOException: No content
堆栈跟踪指向 IMAPFolder.java:1767
在我的测试用例中,有的复制成功的消息有6MB那么大,有的复制失败的消息只有16KB,所以不是大小问题。
我不确定,但失败的邮件可能有附件。在失败的邮件组和成功的邮件组中都找到了内容类型 multipart/ALTERNATIVE
。
在 Thunderbird 等邮件客户端中打开失败的邮件可以正常工作,因此邮件没有损坏。
更新:
mail.imap.fetchsize
对这个问题起到了作用。当它是默认值 16,384b 时,运行 在 1000 条消息的样本中,最小的失败消息是 16,432b -- 略微超过 fetchsize。
当我将它增加到 65,536b 时——同一个样本的最小失败消息是 65,787b——再次略微超过 fetchsize。
大小为 16,432b 的消息在使用默认提取大小时始终失败,但使用更高的提取大小成功复制,所以这绝对是一个问题。
知道导致此问题的原因吗?
遇到这个问题如何复制消息?
TIA!
p.s。我正在使用 Java 1.7u71 和 Javamail 1.5.2
根据我们的离线讨论,将 mail.imap.partialfetch
属性 设置为 false
会使其起作用。发生这种情况时,几乎总是因为服务器以某种方式损坏。
另请参阅:
Javamail Notes "A list of the known limitations, bugs, issues" 第 4 和 5 节下。
此错误已在 Java Mail 1.6
中修复
我正在尝试将邮件从一个 IMAP 存储复制到另一个。
执行实际复制的代码行是:
folder.appendMessages(new Message[] { m });
大多数邮件复制没有问题,但有些邮件复制失败:
javax.mail.MessagingException: IOException while appending messages;
nested exception is:
java.io.IOException: No content
堆栈跟踪指向 IMAPFolder.java:1767
在我的测试用例中,有的复制成功的消息有6MB那么大,有的复制失败的消息只有16KB,所以不是大小问题。
我不确定,但失败的邮件可能有附件。在失败的邮件组和成功的邮件组中都找到了内容类型 multipart/ALTERNATIVE
。
在 Thunderbird 等邮件客户端中打开失败的邮件可以正常工作,因此邮件没有损坏。
更新:
mail.imap.fetchsize
对这个问题起到了作用。当它是默认值 16,384b 时,运行 在 1000 条消息的样本中,最小的失败消息是 16,432b -- 略微超过 fetchsize。
当我将它增加到 65,536b 时——同一个样本的最小失败消息是 65,787b——再次略微超过 fetchsize。
大小为 16,432b 的消息在使用默认提取大小时始终失败,但使用更高的提取大小成功复制,所以这绝对是一个问题。
知道导致此问题的原因吗?
遇到这个问题如何复制消息?
TIA!
p.s。我正在使用 Java 1.7u71 和 Javamail 1.5.2
根据我们的离线讨论,将 mail.imap.partialfetch
属性 设置为 false
会使其起作用。发生这种情况时,几乎总是因为服务器以某种方式损坏。
另请参阅:
Javamail Notes "A list of the known limitations, bugs, issues" 第 4 和 5 节下。
此错误已在 Java Mail 1.6
中修复