我有一个要求我需要下载电子邮件并保存(作为eml文件(,并使用Java和EWS托管API保存将其作为单独的文件进行保存。在互联网上进行了一些搜索之后,我撰写了按照Java代码的编写,它似乎正在做我想要的。但是,我对它的效率有一些疑问,因为我认为在这种方法中,每个附件都从遥控器下载了两次。该评论正确吗?
item.load(new PropertySet(ItemSchema.MimeContent,ItemSchema.Attachments));
MimeContent mc = item.getMimeContent();
try(FileOutputStream fs = new FileOutputStream("d:\emailtmp\"+ Utils.cleanFileName(item.getId().getUniqueId())+".eml");){
fs.write(mc.getContent());
}
AttachmentCollection attachments = item.getAttachments();
if(attachments == null )
return ;
for(Attachment a : attachments){
if (a instanceof FileAttachment){
try(FileOutputStream stream = new FileOutputStream("d:\emailtmp\"+Utils.cleanFileName(((FileAttachment) a).getName()));){
FileAttachment fileAttachment = (FileAttachment)a;
fileAttachment.load(stream);
}
}
}
ps:使用EWS托管API 2.0-JAVA8
附件将在MIME内容中那里。另外,您的代码不能满足嵌套的附件,例如附件等。