2012-08-07 73 views
0

我试图从Exchange电子邮件中加载文件附件(其图像文件)。Exchange EWS MailItem显示附件,但不让我检索文件附件

` 的foreach(在findResults.Items EmailMessage项) { 如果(item.HasAttachments) { 变种东西= item.Attachments [0];

   foreach (Attachment attachment in item.Attachments) 
       { 
        if (attachment is FileAttachment) 
        { 
         FileAttachment fattach = (FileAttachment)attachment;` 

出于某种原因,即使项目有附件(我可以通过登录到Web界面证实了这一点),它不允许我检索FileAttachment的。

它显示为空。为什么一个项目在集合中有一个附件,但没有可检索的?

回答

0

我有一个类似的问题,并非所有的属性都设置好了,所以您需要从Exchange服务本身调用LoadPropertiesForItems方法来加载额外的数据,如附件。
例如,如果要加载的项目x的所有附件和交换服务实例是S则:

List<Item> xlist = new List<Item>(); 
      xlist.Add(x); 
      s.LoadPropertiesForItems(xlist,PropertySet.FirstClassProperties); 
0

当绑定到该项目,你需要指定附件属性。以下代码示例应该有所帮助:

PropertySet propertySet = new PropertySet(ItemSchema.Subject, ItemSchema.Attachments);  
Item item = Item.Bind(service, itemId, propertySet); 
0

您错过了加载附件。请参阅下面的想法示例

EmailMessage msgInfo = null; 
foreach (Item msgItemInfo in msgItemWithNotification) 
{ 
    msgInfo = EmailMessage.Bind(exchange, msgItemInfo.Id); 
    foreach (Attachment attachment in msgInfo.Attachments) 
     { 
      if(attachment is FileAttachment) 
       { 
        FileAttachment fattach = attachment as MSEWS.FileAttachment; 
        fattach.Load(); 
        Stream excelFileStream = new System.IO.MemoryStream(fattach.Content); 
       } 
     } 
} 
+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/16889398) – 2017-08-01 15:21:15