【问题标题】:EWS Read Mail Plain Text Body Getting ServiceObjectPropertyExceptionEWS 读取邮件纯文本正文获取 ServiceObjectPropertyException
【发布时间】:2016-07-04 08:19:53
【问题描述】:

我在下面的代码中执行了以下操作,但仍然收到 ServiceObjectPropertyException。我显然按照here too 的建议加载了该属性。请任何人都可以帮助指出我做错了什么

this.ExchangeService = new ExchangeService(ExchangeVersion.Exchange2013);

                this.ExchangeService.Credentials = new WebCredentials(mailBox, password);
                this.ExchangeService.Url = new Uri("https://mail.xxxxxxxxxxx.com/EWS/Exchange.asmx");                

                PropertySet itemProperty = new PropertySet();
                itemProperty.RequestedBodyType = BodyType.Text;


                SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));

                ItemView view = new ItemView(999);
                view.PropertySet = itemProperty;                

                List<ExchangeMailResponse> emails = new List<ExchangeMailResponse>();

                FindItemsResults<Item> emailMessage = this.ExchangeService.FindItems(WellKnownFolderName.Inbox, searchFilter, view);                               


                foreach (Item mail in emailMessage)
                {

                    ExchangeMailResponse email = new ExchangeMailResponse();


                    mail.Load(itemProperty);                  

                   email.Message = mail.Body.Text;                   


                }   

【问题讨论】:

    标签: c# api exchangewebservices


    【解决方案1】:

    您尝试使用属性集,因为您没有使用 BasepropertySet 重载,并且您没有添加任何属性,您唯一告诉交换器返回 IdOnly。因此,在基本级别上,您至少需要添加 Body 属性,例如

    itemProperty.Add(ItemSchema.Body);
    

    但是,您将无法在 FindItems 操作中使用该属性集,因此我建议您更改代码,例如

            SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
    
            PropertySet FindItemPropertySet = new PropertySet(BasePropertySet.IdOnly);
    
            ItemView view = new ItemView(999);
            view.PropertySet = FindItemPropertySet;
            PropertySet GetItemsPropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
            GetItemsPropertySet.RequestedBodyType = BodyType.Text;
    
    
            FindItemsResults<Item> emailMessages = null;
            do
            {
                emailMessages = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view);
                if (emailMessages.Items.Count > 0)
                {
                    service.LoadPropertiesForItems(emailMessages.Items, GetItemsPropertySet);
                    foreach (Item Item in emailMessages.Items)
                    {
                        Console.WriteLine(Item.Body.Text);
                    }
                }
            } while (emailMessages.MoreAvailable);
    

    干杯 格伦

    【讨论】:

      猜你喜欢
      • 2018-01-04
      • 2011-06-19
      • 2012-06-29
      • 1970-01-01
      • 2011-10-09
      • 2015-11-05
      • 2020-07-04
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多