无法使用 mailkit 通过 Message-ID 获取 Yahoo 邮件
unable to get Yahoo mail by Message-ID using 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 上工作正常,雅虎没有结果 mail.I 应该提到我可以收到所有邮件,但问题是在获取单个邮件时 message.Am 我做错了什么?
不同的 IMAP 服务器实现 SEARCH 的方式不同。
也就是说,为什么要对 message-id 值进行 base64 解码?这没有意义。
感谢@jstedfast,我发现搜索邮件项目的最佳方式是通过 UniqueId 而不是 Message-ID,因为搜索命令可能 return 对于不同的服务器,这种方式没有结果。
以下代码适用于所有服务器:
foreach (var item in Client.Inbox.Fetch(new[] { uId }, MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure))
{
var message = Client.Inbox.GetMessage(item.UniqueId)
}
我想使用以下代码通过 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 上工作正常,雅虎没有结果 mail.I 应该提到我可以收到所有邮件,但问题是在获取单个邮件时 message.Am 我做错了什么?
不同的 IMAP 服务器实现 SEARCH 的方式不同。
也就是说,为什么要对 message-id 值进行 base64 解码?这没有意义。
感谢@jstedfast,我发现搜索邮件项目的最佳方式是通过 UniqueId 而不是 Message-ID,因为搜索命令可能 return 对于不同的服务器,这种方式没有结果。 以下代码适用于所有服务器:
foreach (var item in Client.Inbox.Fetch(new[] { uId }, MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure))
{
var message = Client.Inbox.GetMessage(item.UniqueId)
}