我已经开发了一个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类的不同方法?谢谢

最佳答案

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

10-04 21:11