Can anyone tell me how to get an email body, receipt, sender, CC info using Exchange Web Service API? I only know how to get subject.
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); service.Credentials = new NetworkCredential("user", "password", "domain"); service.Url = new Uri("https://208.243.49.20/ews/exchange.asmx"); ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; FindItemsResults<Item> findResults = service.FindItems( WellKnownFolderName.Inbox, new ItemView(10)); foreach (Item item in findResults.Items) { div_email.InnerHtml += item.Subject+"<br />"; }
My development environment is asp.net c# Exchange-server 2010 Thank you.
Since the original question specifically asked for "email body, receipt, sender and CC info," I thought I would address those. I assume "receipt" is recipient info, and not the "notify sender" feature of email that no one uses. CC looks like it is handled the same way as recipients.
I liked Henning's answer to reduce the function to two calls, but had a little bit of difficulty figuring out how to handle a PropertySet
. Google search was not immediately clear on this, and I ended up using someone else's tutorial:
// Simplified mail item public class MailItem { public string From; public string[] Recipients; public string Subject; public string Body; } public MailItem[] GetUnreadMailFromInbox() { FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(128)); ServiceResponseCollection<GetItemResponse> items = service.BindToItems(findResults.Select(item => item.Id), new PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.From, EmailMessageSchema.ToRecipients)); return items.Select(item => { return new MailItem() { From = ((Microsoft.Exchange.WebServices.Data.EmailAddress)item.Item[EmailMessageSchema.From]).Address, Recipients = ((Microsoft.Exchange.WebServices.Data.EmailAddressCollection)item.Item[EmailMessageSchema.ToRecipients]).Select(recipient => recipient.Address).ToArray(), Subject = item.Item.Subject, Body = item.Item.Body.ToString(), }; }).ToArray(); }
Using FindItems
will only get you so far, because it does only return the first 255 bytes of a body. What you should do is a combination of FindItem
to request the ids of the mails and issue one or more GetItem
calls to get the properties you are interested in.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With