Я пытаюсь получить все сообщения с указанной пользователем даты на сервере Exchange 2016, используя управляемый API EWS в C #.
Я аутентифицируюсь с:
public static void Login(string username, string password)
{
service.UseDefaultCredentials = false;
service.Credentials = new WebCredentials(username, password);
service.AutodiscoverUrl(username, RedirectionUrlValidationCallback);
}
Затемвыберите соответствующую папку входящих сообщений с помощью
sharedMailbox = new Mailbox(Properties.Settings.Default.Inbox);
SMTP-адрес сохраняется в Settings.settings.
Затем я нахожу нужную папку, используя следующую команду (из эта тема ):
targetFolderId = new FolderId(WellKnownFolderName.Inbox, sharedMailbox);
// set folder view
view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties);
view.PropertySet.Add(FolderSchema.DisplayName);
view.Traversal = FolderTraversal.Deep;
folderResults = service.FindFolders(WellKnownFolderName.Inbox, view);
foreach(Folder f in folderResults)
{
if(f.DisplayName == "Invoices")
{
targetFolderId = f.Id;
//tried showing a message box here
}
}
И используйте следующее (код фильтра из здесь и извлечение подробностей из кода сервера Exchange из здесь ), чтобы получить нужные мне сообщения:
public static void FetchUnreadMessages(DateTime searchDate)
{
SearchFilter greaterthanfilter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, searchDate);
SearchFilter lessthanfilter = new SearchFilter.IsLessThan(ItemSchema.DateTimeReceived, searchDate.AddDays(1));
SearchFilter dayFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, greaterthanfilter, lessthanfilter);
results = service.FindItems(targetFolderId, dayFilter, view);
foreach(var item in results.Items)
{
emails.Add((EmailMessage)item);
}
PropertySet properties = (BasePropertySet.FirstClassProperties);
service.LoadPropertiesForItems(emails, properties);
}
Я не уверен, где это ломается.Я попытался показать окно сообщения в цикле foreach, которое находит папку с указанным именем, и кажется, что папка не найдена.Я знаю, что в общей папке входящих сообщений есть папка с таким отображаемым именем.
Я не очень хорош в отладке, и, к сожалению, мое понимание EWS API довольно шатко.Любые предложения относительно того, что мне не хватает, приветствуются.
Я храню все, что связано с входящей почтой, в статическом классе, поэтому мне нужно беспокоиться только об одном экземпляре.