EWS - FileAttachment内容为空/字节[0]

时间:2016-08-09 16:41:38

标签: exchangewebservices

我编写了一个WebAPI控制器方法,该方法通过ExchangeOnline中的唯一ID查找邮件。我写了一个小模型类,以存储邮件的一些属性,如主题,发件人,收到的日期等。

现在,如果邮件包含此类附件,我还想访问文件附件。因此,我编写了这段代码(只是相关部分):

List<AttachmentItem> attDataContainer = new List<AttachmentItem>();
        EmailMessage originalMail = EmailMessage.Bind(service, new ItemId(uniqueID), new PropertySet(ItemSchema.Attachments));

        foreach (Attachment att in originalMail.Attachments)
        {
            if (att is FileAttachment && !att.IsInline)
            {
                FileAttachment fa = att as FileAttachment;
                fa.Load();

                attDataContainer.Add(
                    new AttachmentItem
                    {
                        ID = fa.Id,
                        Name = fa.Name,
                        ContentID = fa.ContentId,
                        ContentType = fa.ContentType,
                        ContentLocation = fa.ContentLocation,
                        Content = Convert.ToBase64String(fa.Content),
                        Size = fa.Size
                    });
            }
        }

该方法确实找到附件并显示您可以在&#34; AttachmentItem&#34;中看到的所有属性。 object - 但不是fa.Content 属性。

我几乎找到了我能找到的任何文件(特别是* .Load()部分以及很多例子。但在我的情况下,我得到&#34; byte [0]&#34;在调试时输出

你对我有什么想法可能是什么原因吗?

PS:顺便说一下,我引用了Microsoft.Exchange.WebServices的v2.0.50727版本。

提前致以最诚挚的问候和谢意, 马可

1 个答案:

答案 0 :(得分:0)

当您在附件上调用load方法时,该方法应向服务器发出GetAttachment请求,该请求将返回该附件的数据。如果启用跟踪https://msdn.microsoft.com/en-us/library/office/dn495632(v=exchg.150).aspx,那么应该允许您遵循应该帮助进行故障排除的基础SOAP请求(例如,您可以看到服务器返回的内容很重要)。

要检查的另一件事是,这是一个真正的附件与One Drive附件,可能是ExchangeOnline的情况。