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ć.