下载电子邮件时,EWS通信错误

时间:2018-12-06 13:14:01

标签: c# exchangewebservices

我正在从交换服务器读取连续的电子邮件并处理其附件。我看到了相同的各种示例,但仍然出现错误

You must load or assign this property before you can read its value

我的代码如下

ItemView itemView = new ItemView(NoEmailProcess);
itemView.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
FindItemsResults<Item> searchResults = service.FindItems(folder.Id, itemView);
foreach (var item in searchResults)
{
  if (item is EmailMessage)
  {
    item.Load();
    try
    {
      // Process my email
    }
    catch
    {
        // error
    }
  }
}

要注意的是,我每次都不会收到此错误。我得到了10%的机会,并且从未在调试过程中得到

我想知道应该在“加载”之前使用“绑定”吗?

EmailMessage.Bind

不确定是什么问题。有人可以帮忙我应该调查的领域吗?

1 个答案:

答案 0 :(得分:0)

如果尝试读取Item中不存在的属性,则会引发异常消息“ 必须先加载或分配此属性,然后才能读取其值”。

Item contain only some properties返回的service.FindItems。尽管为ItemSchema.HasAttachments返回了属性Item,但缺少属性ItemSchema.Attachments。因此,您只能检查Item上是否存在附件。但是尝试立即阅读它们将抛出显示的异常。

在读取属性ItemSchema.Attachments之前,需要先加载它,然后可以通过ItemSchema.BindItemSchema.Load进行加载。这两个调用都导致一个GetItem请求。

由于GetItem请求也返回了属性ItemSchema.Attachments(请参阅上面的链接的MS文档),因此可以安全地读取它。

相关问题