0

我正在尝试从交换电子邮件中加载文件附件(其图像文件)。

` foreach(findResults.Items 中的 EmailMessage 项){ if (item.HasAttachments) { var something = item.Attachments[0];

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

出于某种原因,即使该项目有附件(我可以通过登录 Web 界面来确认这一点),它也不允许我检索文件附件。

它显示为空。为什么一个项目在集合中有一个附件但不能检索?

4

3 回答 3

0

绑定到 Item 时,需要指定 Attachments 属性。以下代码示例应该会有所帮助:

PropertySet propertySet = new PropertySet(ItemSchema.Subject, ItemSchema.Attachments);    
Item item = Item.Bind(service, itemId, propertySet);
于 2015-03-09T08:23:46.523 回答
0

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

List<Item> xlist = new List<Item>();
            xlist.Add(x);
            s.LoadPropertiesForItems(xlist,PropertySet.FirstClassProperties);
于 2012-08-09T12:49:19.950 回答
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);
              }
       }
}
于 2017-07-31T19:28:11.967 回答