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

JavaMail从邮件下载附件

欧阳安阳
2023-03-14

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

Multipart multiPart = (Multipart) message.getContent();

int numberOfParts = multiPart.getCount();
for(int j = 0; j < numberOfParts; j++)
{
    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(j);

    if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))
    {
        part.saveFile( "C:\\Users\\Demo\\Desktop\\" + part.getFileName());

    }
 }

共有1个答案

宗政卓
2023-03-14

电子邮件有多种可能的MIME结构。一般解决方案可能非常复杂,因为它需要考虑签名和加密消息等问题。不同的邮件程序将使用不同的MIME结构,当然,一些邮件程序在使用MIME的方式上会有错误。您需要决定需要支持哪些案例。

通常,multipart/alternative用于包含主消息体的不同版本,因此可以跳过,因为它不包含任何附件。通常,带有附件的邮件将具有顶级多部分/混合内容,其中第一个正文部分包含主邮件正文。第一部分可以是简单文本部分、具有文本/纯文本和文本/html部分的多部分/备选方案,或者与文本/html部分和相关图像相关的多部分/备选方案。

附件通常(但不总是)具有附件的内容配置。附件通常(但不总是)有一个文件名。

因此,一个好的方法是首先只考虑具有顶级多部分/混合内容的消息,然后将第一部分之后的部分视为附件,无论它们是否这样说。正如我上面所说,签名和加密的消息会使这变得更加复杂。

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

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

  • 问题内容: 我查看了参考文档,Spring似乎对发送邮件有很好的支持。但是,我需要登录到邮件帐户,阅读邮件并下载所有附件。Spring mail API是否支持下载邮件附件? 我知道您可以使用Java Mail API来执行此操作,但是在过去,我发现使用它非常冗长且令人不愉快。 编辑 :我收到了一些指向教程的答复,这些教程描述了如何发送带有附件的邮件,但是我要问的是如何从 收到的 邮件中 读取 附

  • 在下载附件时,我得到了一个额外的类型的文件。我正在使用这是我的下载附件代码 这里是一个将作为参数和其他一些参数的类。是定义为

  • 我正在一个apache camel项目中下载收件箱中的任何附件,以实现我遵循http://camel.apache.org/mail.html中使用附件的邮件示例中的信息。除了附件的文件名带有特殊的字符或空格外,其他操作都很正常。例如,如果附件的文件名为“voucher.pdf”,则程序将运行并下载该文件,但如果附件的文件名为“Pase de abordar en Línea(1).pdf”,则会

  • 我正在为我的大学电子邮件服务开发一个android电子邮件客户端。然而,我在附件方面有一些问题。实际上,我可以从gmail或其他流行的电子邮件服务中获取附件,但我不能从我们大学域名的电子邮件中获取附件。 在gmail中,它在MimeMultipart中发送多个身体部位(Message.getContent()返回MimeMultipart对象),我可以获取附件。 然而,在我的大学电子邮件服务发送一