Как получить UniqueBody из входящей электронной почты в EWS? - PullRequest
1 голос
/ 18 мая 2011

У меня есть следующий код, и он работает:

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 будет работать «из коробки», а это значит, что мне не придется анализировать новое письмо, чтобы получить новые данные, которые меня интересуют.Я предполагаю, что есть что-то простое, что я скучаю.Есть идеи?

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Когда вы связываете ItemId, который хотите получить, вам необходимо четко указать, какие свойства вы хотите.

Например,

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

Класс PropertySet имеетПерегрузка, которая включает params[], так что вы можете включать / исключать ряд дополнительных свойств.Просто просмотрите перечисление ItemSchema и выберите нужные.

1 голос
/ 09 марта 2012

Вот что я использовал:

PropertySet pSet = new PropertySet(new[]{ ItemSchema.UniqueBody });
pSet.RequestedBodyType = BodyType.Text;
pSet.BasePropertySet = BasePropertySet.FirstClassProperties;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...