保存ItemAttachment

时间:2014-10-02 15:12:47

标签: java exchange-server mime-types ewsjavaapi

我正在使用EWS JAVA API 1.2,我在使用此代码保存ItemAttachment时遇到问题。

if(attachmentsCol.getPropertyAtIndex(i) instanceof FileAttachment) 
{
    ...
}
else
{
    ItemAttachment attachment = (ItemAttachment)attachmentsCol.getPropertyAtIndex(i);                                          
    attachment.load();
    Item item = attachment.getItem();
    item.load(newPropertySet(ItemSchema.MimeContent));`
    MimeContent Itemmc = item.getMimeContent();
    ....
} 

item.load(....)会返回此错误

  

microsoft.exchange.webservices.data.InvalidOperationException:这个   无法执行操作,因为此服务对象没有   一个Id。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您无法在ItemAttachment本身上执行加载,因为这将尝试执行对附件无效的GetItem请求。你需要做的是在Attachment.load()上包含一个带有Mime内容的属性集,例如

                foreach (var item in findResults.Items)
                {
                    foreach (Attachment Attach in item.Attachments) {
                        if (Attach is ItemAttachment) {
                            PropertySet psProp = new PropertySet(BasePropertySet.FirstClassProperties);
                            psProp.Add(ItemSchema.MimeContent);
                            ((ItemAttachment)Attach).Load(psProp);
                            if (((ItemAttachment)Attach).Item.MimeContent != null)
                            {
                                System.IO.File.WriteAllBytes("c:\\temp\\file.eml", ((ItemAttachment)Attach).Item.MimeContent.Content);
                            }                               
                        }
                    }                      

干杯 格伦