gmail - 使用 Thunderbird 发送的包含 .eml 文件的电子邮件无法加载 BODYSTRUCTURE 异常

标签 gmail imap jakarta-mail gmail-imap eml

我们有一个使用 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)

最佳答案

我成功使用 this方法。简而言之,如果您的 Message 类型为 MimeMessage 并且遇到此异常,请从原始 MimeMessage 创建一个新的 MimeMessage 实例并对其进行处理。例如,当我调用 Message 的 getContent() 方法时出现此错误,因此我编写了以下方法来获取内容:

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;
            }
        }
    } 

关于gmail - 使用 Thunderbird 发送的包含 .eml 文件的电子邮件无法加载 BODYSTRUCTURE 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18115854/

相关文章:

ssl - Javamail如何在没有证书验证的情况下连接到IMAPs邮件服务器

java - Gmail smtp、Blackberry、BB、socketConnection,以编程方式通过 gmail smtp 发送电子邮件

email - 使用 Gmail API 发送的邮件中缺少附件,但仅适用于收件人

http - 使用 API 和访问 token 的 Gmail 搜索

c++ - 将 Libcurl 与 C++ 和 IMAP 协议(protocol)结合使用的 IMAP 命令

Javamail imap getMessages 返回 null 数组

gmail - 如何从类别中获取 gmail 收件箱提要

java - 发送 IMAP 空闲命令后是否需要执行其他操作才能保持连接处于 Activity 状态?

java - 如何解析电子邮件并提取标题和正文部分

java - 用于 JUnit 测试的可配置邮件服务器模拟?