n17*_*911 4 exchangewebservices c#-4.0
我想编写代码以从Exchange 2010获取Message正文.我在C#程序中使用EWS.
我试过了:
FindItemsResults<Item> fiitems = service.FindItems(folder.Id, "from:*", iv);
foreach (Item item in fiitems)
{
if (item is EmailMessage)
{
Console.WriteLine("subject");
Console.WriteLine((item as EmailMessage).Subject);
Console.WriteLine("body");
Console.WriteLine((item as EmailMessage).Body);
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误说'你必须加载或分配这个属性才能读出它的值"
然后我尝试了:
Console.WriteLine("Subject:\t" + item.Subject);
Console.WriteLine("Title:\t" + item.TextBody);
Console.WriteLine("Received At:\t\t" + item.DateTimeReceived.ToString("dd MMMM yyyy"));
Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)
我收到错误说"属性TextBody仅对Exchange Exchange2013或更高版本有效"我正在使用Exchange2010.
谢谢你的任何建议.
在EWS中使用FindItems操作时,它将仅返回可用于Item的属性的子集.它不会返回的属性之一是Body属性(或大于512字节的任何流媒体属性),请参阅http://msdn.microsoft.com/EN-US/library/office/dn600367(v=exchg.150)的.aspx
你需要做的是使用GetItem操作(Managed API中的Load()方法)来获得这个最有效的方法是使用LoadPropertiesForItems方法,它将执行批处理GetItem,所以你需要修改你代码就像
PropertySet Props = new PropertySet(BasePropertySet.IdOnly);
Props.Add(ItemSchema.Body);
Props.Add(ItemSchema.Subject);
FindItemsResults<Item> fiitems = null;
do
{
fiitems = service.FindItems(Folder.Id, "from:*", iv);
if (fiitems.Items.Count > 0)
{
service.LoadPropertiesForItems(fiitems.Items, Props);
foreach (Item item in fiitems)
{
if (item is EmailMessage)
{
Console.WriteLine("subject");
Console.WriteLine((item as EmailMessage).Subject);
Console.WriteLine("body");
Console.WriteLine((item as EmailMessage).Body);
}
}
}
iv.Offset += fiitems.Items.Count;
} while (fiitems.MoreAvailable);
Run Code Online (Sandbox Code Playgroud)
干杯格伦
| 归档时间: |
|
| 查看次数: |
2943 次 |
| 最近记录: |