无法使用mailkit通过Message-ID获取Yahoo邮件

时间:2017-04-16 12:34:18

标签: imap yahoo mailkit

我想使用以下代码通过Message-Id获取邮件项目。

     var messageId = messageIdStringValue.DecryptFromBase64();
          var newId = "<" + messageId + ">";
        var matches = Client.Inbox.Search(SearchQuery.HeaderContains("Message-ID", newId));
        foreach (var uid in matches)
        {

            var message = Client.Inbox.GetMessage(uid);

        }

由于没有雅虎邮件的结果,它在Gmail上工作正常。我应该提一下,我可以获取所有邮件,但问题在于获取单个邮件。我做错了什么?

2 个答案:

答案 0 :(得分:1)

感谢@jstedfast我发现搜索邮件项目的最佳方式是使用UniqueId而不是Message-ID,因为搜索命令可能不会以不同的方式为不同的服务器返回结果。 以下代码适用于所有服务器:

 foreach (var item in Client.Inbox.Fetch(new[] { uId }, MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure))
        {
          var message = Client.Inbox.GetMessage(item.UniqueId)
        }  

答案 1 :(得分:0)

不同的IMAP服务器以不同的方式实现SEARCH。

那就是说,为什么你base64解码message-id值?这没有意义。