Pobieranie wszystkich wiadomości w skrzynce odbiorczej za pomocą zarządzanego interfejsu API programu Exchange Web Services i przechowywanie ich jako plików .eml

Chcę pobrać wszystkie wiadomości e-mail w folderze Skrzynka odbiorcza za pomocą interfejsu API zarządzanego przez EWS i zapisać je jako.eml. Problem polega na pobieraniu(1) wszystko maile z(2) wszystkie nagłówki (np. Z, na, temat) (Przechowuję informacje o tych wartościachfrom, to i inne nieruchomości gdzie indziej, więc ich też potrzebuję) i(3)byte[] EmailMessage.MimeContent.Content. Właściwie brakuje mi zrozumienia

Microsoft.Exchange.WebServices.Data.ItemView,Microsoft.Exchange.WebServices.Data.BasePropertySet iMicrosoft.Exchange.WebServices.Data.ItemSchema

dlatego trudno mi to znaleźć.

Mój podstawowy kod to:

Kiedy tworzęPropertySet następująco:

PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.MimeContent);

Otrzymuję następujący wyjątek:

The property MimeContent can't be used in FindItem requests.

Nie rozumiem

(1) Co teItemSchema iBasePropertySet są

(2) I jak mamy z nich korzystać

Więc usunąłemItemSchema.MimeContent:

PropertySet properties = new PropertySet(BasePropertySet.FirstClassProperties);

Napisałem prosty następujący kod, aby uzyskać wszystkie wiadomości w skrzynce odbiorczej:

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);

Powyżej zachowałem rozmiar stronyItemView do 50, aby pobrać nie więcej niż 50 maili na raz, a następnie zrównoważyć je o 50, aby otrzymać kolejne 50 maili, jeśli takie istnieją. Jednak idzie w nieskończonej pętli i ciągle drukujeLoop na konsoli. Więc muszę być wyrozumiałypagesize ioffset źle. chcę zrozumieć

(3) copagesize, offset ioffsetbasepoint wItemView konstruktor oznacza

(4) jak się zachowują i

(5) jak ich używać do pobierania wszystkich wiadomości w skrzynce odbiorczej

Nie znalazłem w Internecie żadnego ładnego artykułu wyjaśniającego te, ale podającego jedynie próbki kodu. Będzie doceniać wyjaśnienie z pytaniem mimo, że może się ono długo zmienić.

questionAnswers(1)

yourAnswerToTheQuestion