Mailkit error Нет идентификаторов были указаны. Имя параметра: uids - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу получить все сообщения во входящих, как это:

using (ImapClient client = new ImapClient(new ProtocolLogger("/imap.log", append: true)))
{
   client.Timeout = 1200000;

   if (!client.IsConnected)
      client.Connect(imap.testserver.com, testportnumber, true);
   client.Authenticate(email, lockmail);
   var searchcond = SearchQuery.All;
   var Inbox = client.Inbox;
   Inbox.Open(MailKit.FolderAccess.ReadOnly);
   var inbox = Inbox.Search(searchcond);
   var fetchs = Inbox.Fetch(inbox, MessageSummaryItems.Envelope | MessageSummaryItems.Flags);
}

В строке Fetch возникает эта ошибка: Нет идентификаторов были указаны. Имя параметра: uids

это означает, что Inbox.Search возвращает некоторые Uids, которых нет в почтовой папке?

Как я могу это решить?

1 Ответ

0 голосов
/ 02 ноября 2018

Это означает, что Search() вернул 0 UID.

Вы можете избежать этой проблемы, выполнив:

var uids = inbox.Search (query);
if (uids.Count > 0) {
    var messages = inbox.Fetch (uids, ...);
    ...
}

Если вы используете MailKit старше 2.0.7, вы можете попробовать обновить его до 2.0.7, что должно сделать это не проблемой (как, например, метод Fetch() не должен обрабатывать пустой набор UID и возвращение без ошибки).

...