我开发了一个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类的不同方法?感谢
答案 0 :(得分:1)
“ATTACHMENT”处置和文件名只是建议,而不是要求。某些消息将具有“附件”而不设置这些。在大多数情况下,您应该将多部分/混合消息中的第一个之后的任何正文部分视为附件。有关详细信息,请参阅JavaMail FAQ。