C# Mailkit错误未指定UID。参数名称:uids

C# Mailkit错误未指定UID。参数名称:uids,c#,asp.net-mvc,email,imap,mailkit,C#,Asp.net Mvc,Email,Imap,Mailkit,我希望获得收件箱中的所有邮件,如下所示: 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.Auth

我希望获得收件箱中的所有邮件,如下所示:

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);
}
在提取行上发生此错误: 没有指定UID。参数名称:uids

这是否意味着收件箱。搜索返回一些邮件文件夹中不存在的UID

如何解决它?

这意味着
Search()
返回了0个UID

您可以通过执行以下操作来避免此问题:

var uids = inbox.Search (query);
if (uids.Count > 0) {
    var messages = inbox.Fetch (uids, ...);
    ...
}
如果您使用的是早于2.0.7的MailKit,可以尝试升级到2.0.7,这应该不会造成问题(如中所示,
Fetch()
方法不应处理一组空UID并返回w/o错误)