Извлечение всех писем в папке «Входящие» из управляемого API веб-служб Exchange и сохранение их в виде файлов .eml
Я хочу получить все письма в папке «Входящие» с помощью EWS Managed API и сохранить их как.eml
, Проблема в получении(1) все письма с(2) все заголовки (как от, до, тема) (Я храню информацию об этих ценностяхfrom
, to
и другие свойства где-то еще, поэтому они мне тоже нужны) и(3)byte[] EmailMessage.MimeContent.Content
, На самом деле мне не хватает понимания
Microsoft.Exchange.WebServices.Data.ItemView
,Microsoft.Exchange.WebServices.Data.BasePropertySet
а такжеMicrosoft.Exchange.WebServices.Data.ItemSchema
вот почему я нахожу это трудным.
Мой основной код:
Когда я создаюPropertySet
следующее:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent);
Я получаю следующее исключение:
The property MimeContent can't be used in FindItem requests.
Я не понимаю
(1) Что этиItemSchema
а такжеBasePropertySet
находятся
(2) И как мы должны их использовать
Итак, я удалилItemSchema.MimeContent
:
PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties);
Я написал простой следующий код, чтобы получить все письма во входящие:
ItemView view = new ItemView(50);
view.PropertySet = properties;
FindItemsResults<Item> findResults;
List<EmailMessage> emails = new List<EmailMessage>();
do
{
findResults = service.FindItems(WellKnownFolderName.Inbox, view);
foreach (var item in findResults.Items)
{
emails.Add((EmailMessage)item);
}
Console.WriteLine("Loop");
view.Offset = 50;
}
while (findResults.MoreAvailable);
Выше я сохранил размер страницыItemView
до 50, чтобы получить не более 50 писем одновременно, а затем сместить его на 50, чтобы получить следующие 50 писем, если они есть. Однако это идет в бесконечном цикле и непрерывно печатаетLoop
на консоли. Так что я должен пониматьpagesize
а такжеoffset
неправильно. я хочу понять
(3) чтоpagesize
, offset
а такжеoffsetbasepoint
вItemView
конструктор означает
(4) как они себя ведут и
(5) как использовать их для получения всех писем в почтовом ящике
Я не нашел ни одной статьи в Интернете, где можно было бы хорошо объяснить их, а просто привел примеры кода. Буду признателен за вопрос объяснения, хотя это может занять много времени.