1
votes

I'm using the Exchange Web Services (Exchange server 2007) to try to send an email with voting buttons in.

I read this question/answer:
Send Voting Email

I have had a colleague using Outlook 2007 send me an email with simple yes/no voting buttons (the buttons display in Outlook, I have not sent an answer) and I can confirm that it is the first email in my Inbox.

I've then used the EWS to get that email and try to get the extended properties relating to the email, so I can get the binary related to the voting buttons and thus send my own email with voting buttons.

Here is my code.

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 is always false, and propertyValue always stays null.

When I put a breakpoint and look at foundItem the rest of the properties are correct - e.g. the sender, subject line, date/time sent, etc.

Also foundItem.ExtendedProperties always has a count of zero. Shoudln't there be something in this property?

1

1 Answers

3
votes

I found the information I needed here:
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())

Hope this helps somebody.