Доступ к расширенному свойству кнопок голосования через веб-службы Exchange - PullRequest
1 голос
/ 04 ноября 2010

Я использую веб-службы Exchange (Exchange Server 2007), чтобы попытаться отправить электронное письмо с кнопками голосования.

Я прочитал этот вопрос / ответ:
Отправить сообщение для голосования

У меня был коллега, использующий Outlook 2007, отправивший мне электронное письмо с простыми кнопками голосования «да / нет» (кнопки отображаются в Outlook, я не отправил ответ), и я могу подтвердить, что это первое письмо в моей папке «Входящие».

Затем я использовал EWS, чтобы получить это электронное письмо и попытаться получить расширенные свойства, относящиеся к электронному письму, чтобы я мог получить двоичный файл, связанный с кнопками голосования, и, таким образом, отправить свое электронное письмо с кнопками голосования.

Вот мой код.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

service.Url = new Uri(ConfigurationManager.AppSettings["URL"]);

service.Credentials = new NetworkCredential(
    ConfigurationManager.AppSettings["Username"], 
    ConfigurationManager.AppSettings["Password"], 
    ConfigurationManager.AppSettings["Domain"]
    );


Item foundItem = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10)).Items[0];

ExtendedPropertyDefinition epd = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.Common,
    0x00008520,
    MapiPropertyType.Binary
);

object propertyValue = null;

bool outBool;

outBool = foundItem.TryGetProperty(epd, out propertyValue);

outBool всегда ложно, а propertyValue всегда остается нулевым.

Когда я ставлю точку останова и смотрю на foundItem, остальные свойства верны - например, отправитель, строка темы, дата / время отправки и т. д.

Также foundItem.ExtendedProperties всегда имеет счетчик нуля. Не должно ли быть что-то в этом свойстве?

1 Ответ

2 голосов
/ 04 ноября 2010

Я нашел нужную мне информацию здесь:
http://social.technet.microsoft.com/Forums/en/exchangesvrdevelopment/thread/2dbab0f2-b23f-4808-8f55-9ecc77edf877

C #

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

service.Url = new Uri(ConfigurationManager.AppSettings["URL"]);

service.Credentials = new NetworkCredential(
    ConfigurationManager.AppSettings["Username"], 
    ConfigurationManager.AppSettings["Password"], 
    ConfigurationManager.AppSettings["Domain"]
    );

Item foundItem = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10)).Items[0];

ExtendedPropertyDefinition myProp = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.Common,
    0x00008520,
    MapiPropertyType.Binary
);

EmailMessage otherMessage = EmailMessage.Bind(service, foundItem.Id, new PropertySet(myProp));
byte[] bytes = (byte[])otherMessage[myProp];   

VB

Dim service As New ExchangeService(ExchangeVersion.Exchange2007_SP1)
service.Url = New Uri(ConfigurationManager.AppSettings("URL"))
service.Credentials = New NetworkCredential(ConfigurationManager.AppSettings("Username"), ConfigurationManager.AppSettings("Password"), ConfigurationManager.AppSettings("Domain"))

Dim myProp As New ExtendedPropertyDefinition(
   DefaultExtendedPropertySet.Common,
   34080,
   MapiPropertyType.Binary
)

Dim foundItem As Item = service.FindItems(WellKnownFolderName.Inbox, New ItemView(10))(0)

Dim otherMessage As EmailMessage = EmailMessage.Bind(service, foundItem.Id, New PropertySet(myProp))
Dim bytes As Byte() = DirectCast(otherMessage(myProp), Byte())

Надеюсь, это кому-нибудь поможет.

...