我想使用以下代码通过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上工作正常。我应该提一下,我可以获取所有邮件,但问题在于获取单个邮件。我做错了什么?
答案 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值?这没有意义。