无法将 IMAPInputStream 转换为 Multipart

2024-01-04

在Java项目中,我可以从gmail服务器接收邮件。但我想收到身体的包裹部分。在这个代码示例中我的最后一个message(messages.length - 1)是多部分/混合的。

调试是通过if块,但它落入 catch 块并给了我以下消息:

线程“main”中的异常 java.lang.ClassCastException:com.sun.mail.imap.IMAPInputStream 无法转换为 javax.mail.Multipart

我该如何处理这个问题?

Message[] messages = folder.getMessages();
        ArrayList<String> attachments = new ArrayList<String>();
        for (int i = messages.length - 1; i >= 0; i--) {

            Part p = messages[i];
            if (messages[i].isMimeType("multipart/*")) 
            {           
                ***Multipart multipart = (Multipart) messages[i].getContent();***
                for (int j = 0, m = multipart.getCount(); j < m; j++) {

                    Part part = multipart.getBodyPart(j);
                    String disposition = part.getDisposition();
                    //
                    if (disposition != null
                            && (disposition.equals("ATTACHMENT"))) 
                    {
                        System.out.println(part.getFileName());
                        attachments.add(saveFile(MimeUtility.decodeText(part.getFileName()), part.getInputStream()));
                    }
                }
            }
        }

Edit

我解决了使用 mail.jar、additional.jar 和activation.jar 的问题,它们仅用于Java项目.

(我之前为我的 Android 项目下载了这些 jar。这就是问题的根源。)


当我使用 Android JavaMail 阅读邮件附件时,我遇到了类似的问题。我通过添加以下代码行修复了此错误。 MailCap 有问题,javamail 找不到多部分/混合部分的处理程序,因此需要添加这一点。这解决了我的问题。希望它能帮助那里的人。

MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);

Cheers!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将 IMAPInputStream 转换为 Multipart 的相关文章

随机推荐

  • 我必须发出数千条提醒,有什么办法可以避免每分钟都出现提醒吗?

    我有一个类似的结构 type Notifications struct Id int Start time Time notifications db GetNotifications 所以现在我需要在时间与当前时间匹配时发送这些通知 1
  • Ipython Emacs 集成

    最近有人设法让 Emacs 23 python mode el 和 ipython el 一起工作吗 我的 emacs 看起来像这样 add to list load path emacs d python mode el 6 0 3 re
  • 将给定图片上的长/纬度转换为像素 x/y

    我有莫斯科的城市地图 我们用一些艺术元素修改了 Google 地图图像 但 GPS 坐标和像素之间的关系保持不变 Problem 如何将我们拥有的各种数据点的 GPS 坐标转换为图像中的像素坐标 理想情况下我可以用 Javascript 来
  • 为 Citrix/终端服务器编程 .NET 应用程序:合规性和陷阱

    我们在这里有点迷失了 我们需要使我们的应用程序可安装在具有 80 多个 Citrix 服务器的网络上 尽管我们的应用程序是 100 有效且可正常运行的 NET 但我们还是经历了一些 对我们来说很奇怪的 行为 您不能使用任何 文档和设置 文件
  • 更改 UILabel 文本不触发自动布局

    我在故事板中有一个视图控制器 并在控制器中将 UILabel 和 ui 集合视图组合在一起 然而 每次我更改 UILabel 文本时 它都会触发自动布局 这表明我获得了视图将布局和视图执行布局事件 我不想更改文本来触发自动布局 但是当我使用
  • Mongodb 查找今天按日期创建的结果

    我有这个查询来获取当月的结果 但我想得到今天的结果 var start new Date 2010 11 1 var end new Date 2010 11 30 db posts find created on gte start lt
  • 每个 url 路由和子路由的 Spring 单页“/a/** => /a/index.html except /a/static/**”

    我正在构建 spring 网站 该网站在子路由下有反应单页应用程序 我当前的 url 结构应该如下所示 localhost admin gt react app localhost gt spring thymeleaf rest webs
  • 如何使用 ImageGrid 将标签添加到颜色条?

    在之前的一个问题中 ImageGrid 中的颜色条标签 matplotlib https stackoverflow com questions 14205547 colobar label matplotlib in imagegrid
  • Ajax 请求包含无效字符

    我创建了一个 AJAX 请求 在新的浏览器中它工作正常 但 IE7 告诉我该行中的字符有错误 其中function gettestvaraibles 站立 有人能告诉我错误可能出在哪里吗 ajax http testurl eID test
  • # -*- 编码:utf-8 -*- 在 python3 上 [重复]

    这个问题在这里已经有答案了 我在 Windows 上使用 Python 3 x 我应该使用 coding utf 8 我的文件上的声明 我读过很多主题 我认为答案是否定的 但我不确定 顺便说一句 我只用英语和意大利语写作 也许你还需要知道一
  • Socket.io Engine.io 问题“?EIO=4&transport=polling&t=OUAHy-a 404”

    当我尝试使用 socket io 将客户端连接到我的网站时 它只是垃圾邮件https example com socket io EIO 4 transport polling t OUAHy a 404 有时请求只是超时而不是 404 在
  • C 风格结构体声明

    我有一个关于 C 风格结构的简单问题 我正在挖掘一些示例代码 发现了一个按以下方式声明的结构 typedef struct STRUCTNAME struct contents STRUCTNAME 请注意 第二次出现 STRUCTNAME
  • TypeScript 在 jquery 函数作用域内调用类上的方法

    我有下面的 TypeScript 类 export class BrandViewModel private items ko observableArray public Add id number name string active
  • 原始查询必须包含主键

    我有一个原始的 SQL 语句views py Message objects raw SELECT s1 ID s1 CHARACTER ID MAX s1 MESSAGE MESSAGE MAX s1 c occurrences FROM
  • 对于这种 PHP 按值调用行为有合理的解释吗?还是 PHP 的 bug?

    PHP 5 5 12 考虑一下
  • 多态模型的骨干集合

    我有一系列动物 App Collections Animals extends Backbone Collection model App Animal url animals returns json 这些动物类别 App Models
  • BinaryWriter 字节序问题

    我正在使用 BinaryWriter 类将二进制文件写入磁盘 当我调用 Write 方法并传递无符号短值时 它会以小端格式写入 例如 bw Write 0xA000 将二进制文件中的值写入为 0x00 0xA0 有没有办法让 BInaryW
  • 如何列出特定 S3 存储桶中的所有文件?

    我在我的项目中使用 AWS S3 存储桶 在其中使用 API 上传图像和列出图像 效果非常好 现在我想列出特定 S3 存储桶 文件夹的所有文件 特定存储桶的对象列表 这是我的 S3 存储桶的屏幕截图 我尝试给存储桶命名 例如 wevieu
  • 以编程方式指定 Django 模型属性

    我想以编程方式向 Django 模型添加属性 在类创建时 定义模型类时 此后模型在运行时不会改变 例如 假设我想定义一个Car模型类并想添加一个price给定货币列表的每种货币的属性 数据库列 这个货币列表应该被认为是一个不会改变运行时间的
  • 无法将 IMAPInputStream 转换为 Multipart

    在Java项目中 我可以从gmail服务器接收邮件 但我想收到身体的包裹部分 在这个代码示例中我的最后一个message messages length 1 是多部分 混合的 调试是通过if块 但它落入 catch 块并给了我以下消息 线程