Great, now there is an easy way to talk to Exchange over ws: managed API
Wrote this in 5 minutes and it worked without a single bug:
ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredential("userid", "password", "domain");
service.Url = new Uri("https://servername/EWS/Exchange.asmx");
ItemView view = new ItemView(100); // Return only ten items.
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, view);
foreach (Item i in findResults)
{
listBox1.Items.Add(i.Subject);
}