JavaMail无法读取XML附件

时间:2014-12-18 10:13:00

标签: java javamail

我开发了一个Java客户端应用程序,用于下载我自己的电子邮件。我发现我无法在电子邮件中找到一些附件,特别是当我向经过认证的公司发送电子邮件时收到的XML文件作为收据。 我用来下载附件的代码:

private void getAttachment(Message message) throws Exception {

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

    for (int i = 0; i < multipart.getCount(); i++) {
        BodyPart bodyPart = multipart.getBodyPart(i);

        if (!Part.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition())
                && StringUtils.isEmpty(bodyPart.getFileName())) {
            continue; // dealing with attachments only
        }
        InputStream is = bodyPart.getInputStream();
        File f = new File("tmp/" + bodyPart.getFileName());
        FileOutputStream fos = new FileOutputStream(f);
        byte[] buf = new byte[4096];
        int bytesRead;
        while ((bytesRead = is.read(buf)) != -1) {
            fos.write(buf, 0, bytesRead);
        }
        fos.close();

    }

}

我的问题是:下载XML附件有什么限制吗?或者我应该挂钩Message类的不同方法?感谢

1 个答案:

答案 0 :(得分:1)

“ATTACHMENT”处置和文件名只是建议,而不是要求。某些消息将具有“附件”而不设置这些。在大多数情况下,您应该将多部分/混合消息中的第一个之后的任何正文部分视为附件。有关详细信息,请参阅JavaMail FAQ