-1
我有一個需要下載電子郵件並將其保存(作爲eml文件)和每個附件作爲使用java和ews託管API的單獨文件的要求。在互聯網上進行了一些搜索後,我寫了下面的java代碼,它似乎在做我想做的事情。然而我對它的效率有一些懷疑,因爲我認爲在這種方法中,每個附件都是從遠程下載的兩次。該評論是否正確,如果有,是否有辦法更有效地做到這一點?使用ews下載含附件的郵件
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
謝謝你的回答,我沒有提到問題,但我們不處理附加的電子郵件及其附件,只處理第一級。這就是代碼忽略它們的原因。順便說一下,你可以發佈任何鏈接示例代碼(用於從本地存儲對象加載mimecontent的示例代碼)? – cacert
只要找一個你喜歡的Mime庫,並使用你使用的語言工作,例如http://stackoverflow.com/questions/19541792/how-to-parse-raw-mime-content-in-java –
你的意思是下載郵件與EWS和解析與Java郵件的內容?我正在EWS API中尋找解決方案。 – cacert