【问题标题】:Mailkit error No uids were specified. Parameter name: uidsMailkit 错误未指定 uid。参数名称:uids
【发布时间】:2019-04-06 12:15:43
【问题描述】:

我想像这样获取收件箱中的所有邮件:

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 行发生此错误: 未指定 uid。参数名称:uids

这是否意味着 Inbox.Search 返回一些邮件文件夹中不存在的 Uid?

我该如何解决?

【问题讨论】:

    标签: c# asp.net-mvc email imap mailkit


    【解决方案1】:

    表示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 并返回无错误)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多