Пропустить и принять электронную почту с сервера MailKit - PullRequest
0 голосов
/ 24 мая 2019

У меня есть некоторые проблемы.У меня есть пользователи, у которых так много писем (~ 5000 писем), я пытаюсь получить только 20 писем с помощью Skip and Take.(Я пытаюсь сделать бесконечную прокрутку) Но мой код такой длинный, потому что я получаю все идентификаторы писем, а после этого я вызываю метод FetchAsync и вызываю Skip and Take.Как я могу получить только 20 электронных писем с краткой информацией с почтового сервера?Я пытаюсь получить счетчик allIds var = 20

await folder.OpenAsync(FolderAccess.ReadOnly).ConfigureAwait(false);
var allIds = await folder.SearchAsync(SearchQuery.All).ConfigureAwait(false);
var fetch = await folder.FetchAsync(allIds,
                MessageSummaryItems.Envelope | MessageSummaryItems.Flags | MessageSummaryItems.Full |
                MessageSummaryItems.UniqueId | MessageSummaryItems.PreviewText | MessageSummaryItems.BodyStructure).ConfigureAwait(false);
var summaries = fetch
                .OrderByDescending(c => c.Date)
                .Skip(offset)
                .Take(limit)
                .ToArray();

1 Ответ

1 голос
/ 24 мая 2019

Попробуйте это решение:

await folder.OpenAsync(FolderAccess.ReadOnly).ConfigureAwait(false);

var ids = (await folder.SortAsync(SearchOptions.All, SearchQuery.All, new[] {OrderBy.ReverseDate}).ConfigureAwait(false)).UniqueIds
    .Skip(offset)
    .Take(limit)
    .ToArray();

var items = await folder.FetchAsync(ids,
    MessageSummaryItems.Envelope | MessageSummaryItems.Flags | MessageSummaryItems.Full |
    MessageSummaryItems.UniqueId | MessageSummaryItems.PreviewText | MessageSummaryItems.BodyStructure).ConfigureAwait(false);
...