我在下面的代码中完成了以下操作,但仍收到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;
}
最佳答案
使用属性集是因为您没有使用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);
干杯
格伦
关于c# - EWS阅读邮件纯文本正文获取ServiceObjectPropertyException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36069801/