提问者:小点点

JavaMail从邮件下载附件


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

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个答案

匿名用户

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

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

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

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