Поскольку в первоначальном вопросе конкретно задавались «тело письма, квитанция, информация об отправителе и CC», я решил обратиться к ним. Я предполагаю, что «квитанция» - это информация о получателе, а не функция «уведомить отправителя» электронной почты, которую никто не использует. Похоже, что CC обрабатывается так же, как и получатели.
Мне понравился ответ Хеннинга о сокращении функции до двух вызовов, но мне было немного трудно понять, как обрабатывать PropertySet
. Поиск в Google не сразу понял, и в итоге я воспользовался чужим учебником :
// 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();
}