我有以下代码,它可以正常工作:

private void OnEvent(object sender, NotificationEventArgs args)
{
    StreamingSubscription sub = args.Subscription;

    foreach (NotificationEvent notification in args.Events)
    {
        switch (notification.EventType)
        {
            case EventType.NewMail:
                if (notification is ItemEvent)
                {
                    ItemEvent item = (ItemEvent)notification;
                    EmailMessage message = EmailMessage.Bind(service, item.ItemId);

                    string fAddress = message.From.Address;
                    string subject = message.Subject;
                    string body = message.Body.Text;
                    string tAddress = message.ToRecipients[0].Address;

                    //and so on...
                }
                break;
        }
    }
}


但是,如果我尝试像这样将“ body”设置为与UniqueBody相等,则...

string body = message.UniqueBody.Text;


该错误提示说:“必须先加载或分配此属性,然后才能读取其值。”我希望UniqueBody可以开箱即用,这意味着我不必解析新电子邮件即可获取我关心的新细节。我假设我缺少一些容易的事情。有任何想法吗?

最佳答案

当您绑定ItemId希望收到的内容时,需要明确说明所需的属性。

例如,

var propertySet = new PropertySet(ItemSchema.UniqueBody);
var email = EmailMessage.Bind(service, item.ItemId, propertySet);


PropertySet类有一个包含params[]的重载,因此您可以自由地包含/排除许多其他属性。只需查看ItemSchema枚举,然后选择所需的枚举即可。

关于c# - 如何从EWS中的传入电子邮件中获取UniqueBody?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6036771/

10-10 04:50