2

我们有一个使用 Java Mail API 访问 Gmail 帐户 (IMAP) 的应用程序。适用于所有类型的电子邮件,除了包含 .eml 文件作为附件的消息并且该消息是使用 Thunderbird 发送的。

这是尝试检索该消息时的异常堆栈跟踪。请指教。

Caused by: com.google.code.javax.mail.MessagingException: Unable to load BODYSTRUCTURE
        at com.google.code.com.sun.mail.imap.IMAPMessage.loadBODYSTRUCTURE(IMAPMessage.java:1377)
        at com.google.code.com.sun.mail.imap.IMAPMessage.getContentType(IMAPMessage.java:492)
4

4 回答 4

4

我使用这种方法取得了成功。简而言之,如果您Message的类型是类型MimeMessage并且您遇到此异常,请从原始 MimeMessage 创建一个新的 MimeMessage 实例并改为处理它。例如,我在调用getContent()Message 的方法时遇到了这个错误,所以我编写了这个方法来获取内容:

private Object getEmailContent(Message email) throws IOException, MessagingException {
        try {
            return email.getContent();
        } catch (MessagingException e) {
            // handling the bug
            if (email instanceof MimeMessage && "Unable to load BODYSTRUCTURE".equalsIgnoreCase(e.getMessage())) {
                return new MimeMessage((MimeMessage) email).getContent();
            } else {
                throw e;
            }
        }
    } 
于 2014-08-14T14:54:37.413 回答
2

您使用的是什么版本的 JavaMail?

您可能会遇到此处描述的 Gmail 错误之一。

于 2013-08-08T02:25:22.903 回答
1

众所周知,GMail 会产生格式错误的BODYSTRUCTURE响应,例如,请参阅来自其代表的此消息。上次我检查(2012 年年中)时,它仍未修复。

于 2013-08-08T14:21:29.187 回答
0

另一种可能性是代表电子邮件的文件被手动从邮件服务器中删除,这导致电子邮件服务器创建的索引(索引文件)错误。这可能会导致相同的错误。

我正在使用Mail Enable,解决方案是删除索引文件(在我的情况下为_index.xml)

于 2020-01-22T13:51:51.987 回答