gpt4 book ai didi

c#-4.0 - 如何在 C# 中使用 Exchange 2010 检索邮件正文

转载 作者:行者123 更新时间:2023-12-05 01:02:37 24 4
gpt4 key购买 nike

我想编写代码以从 Exchange 2010 获取消息正文。我在 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);
}
}

但是我收到错误消息,说“您必须先加载或分配此属性,然后才能读取其值”

然后我尝试:
                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();

我收到错误消息“属性 TextBody 仅对 Exchange Exchange2013 或更高版本有效”
我正在使用 Exchange2010。

谢谢你的任何建议。

最佳答案

当您在 EWS 中使用 FindItems 操作时,它只会返回可用于项目的属性的子集。它不会返回的属性之一是 Body 属性(或任何大于 512 字节的流属性),请参阅 http://msdn.microsoft.com/EN-US/library/office/dn600367(v=exchg.150).aspx

您需要做的是使用 GetItem 操作(即托管 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);

干杯
格伦

关于c#-4.0 - 如何在 C# 中使用 Exchange 2010 检索邮件正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com