JavaMail从邮件下载附件

时间:2016-06-09 12:03:22

标签: java javamail

如何从包含Content-Type:multipart / alternative的邮件下载附件;

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

答案 0 :(得分:0)

电子邮件有各种各样可能的MIME结构。一般解决方案可能非常复杂,因为它需要考虑签名和加密的消息以及其他问题。不同的邮件程序将使用不同的MIME结构,当然一些邮件程序会在如何使用MIME时遇到错误。您需要确定需要支持的案例。

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

附件通常(但不总是)具有内容处理附件。附件通常(但不总是)具有文件名。

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