我已经开发了一个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。