当前位置: 首页 > 知识库问答 >
问题:

Javamail在下载附件时获得一个额外文件

单于奕
2023-03-14

在下载附件时,我得到了一个额外的File类型的文件。我正在使用MimeBodyPart.saveFile()这是我的下载附件代码

for (MimeBodyPart mbp : msgToDownload.getAttachmentList()) {
     updateProgress(msgToDownload.getAttachmentList().indexOf(mbp),
     msgToDownload.getAttachmentList().size());
     mbp.saveFile(DOWNLOAD_LOCATION + mbp.getFileName());
 }

这里msgToDownload是一个将Message msg作为参数和其他一些参数的类。getAttachmentList()是定义为List的MimeBodyPart类型的列表

    sb.setLength(0);
        msgToRender.clearAttachments();
        Message msg = msgToRender.getMsgRef();
        try {
//            String messageType = msg.getContentType();

            sb.append(getText(msg));

            if (hasAttachments(msg)) {
                Multipart mp = (Multipart) msg.getContent();
                for (int i = mp.getCount() - 1; i >= 0; i--) {
                    BodyPart bp = mp.getBodyPart(i);

                    MimeBodyPart mbp = (MimeBodyPart) bp;
                    msgToRender.addAttachment(mbp);
                }
            }
    }catch(Exception e){
    }

额外文件包含邮件文本部分的属性。额外文件的内容

-001a114fd0aa0b377d0546bb84a0 Content-Type: text/平原; charset=UTF-8请找到附件...--001a114fd0aa0b377d0546bb84a0 Content-Type: text/html; charset=UTF-8请找到附件...--001a114fd0aa0b377d0546bb84a0--


共有1个答案

闻人昊昊
2023-03-14

首先,您应该了解isMimeType方法

问题很可能是您没有处理多部分/可选消息。请参阅JavaMail常见问题解答中的示例代码。

 类似资料:
  • 我试图通过javamail和imap从我的电子邮件下载所有新的电子邮件附件。这一切都很好,但有些附件在PDF中被解码为BASE64,这是我的声明 如何获取此附件并将其下载到硬盘? 到目前为止已经尝试过了,第一个IF语句使用Base64解码捕获附件。 如果有一种简单易行的方法可以将附件下载到我的磁盘,也可以使用NodeJS。尝试过node-imap,但我在那里遇到了同样的错误。

  • 最近我在通过oracle-javamail从我的电子邮件下载CSV时遇到了一个问题。我发现第一个工作正常(来自大型机服务器),但是第二个csv附件似乎是“应用程序/vnd.ms-excel”,当它显然是一个. csv文件时,就像另一个下载完全正常的文件一样。 我在这两个问题上使用了相同的代码,但找不到有关此问题的任何信息。 如果我把那封电子邮件发给自己,我可以神奇地下载附件而没有任何问题。任何帮助

  • 如何从内容类型为“多部分/备选”的邮件中下载附件;

  • 我正在使用进行下载任务,我希望显示速度和时间以及“进度百分比”。我正在中使用。 解决方案

  • 我使用下面的代码将pdf文件附加到邮件(JAVAMAIL)中。这个位置工作完美,并添加附件到我的邮件,但这邮件没有任何正文。 当我将下面的行添加到我的代码中时,它会删除附件并发送给我只包含文本的邮件。 请帮助我添加附件和测试体到我的邮件。

  • 将数据写入字符串生成器的逻辑,在由于append(“\n”)而迭代最后一条记录之后,将添加一个我不需要的新空行。