首页 > 解决方案 > 带有 UIDS 的 POP3 GetMessages

问题描述

我使用 MailKit 版本 1.18.1.1,我想切换到最新版本,但我不能,因为 GetMessages 不再接受 UIDS 列表,而是想要一个 int32 列表。为什么?有没有可能再次使用旧版本的GetMessages?我的邮件客户端使用将数据库中的 UIDS 列表与 POP 服务器上读取的列表进行比较,以定义要下载的 UIDS。感谢您的任何回复和建议

标签: vb.netmailkit

解决方案


我放弃了接受 UID 的 API,因为它需要 MailKit 保留自己的 UID 到索引映射的副本,这不仅意味着更多的内存使用,而且与服务器保持同步也更加复杂。

您现在需要做的是调用 client.GetMessageUids() 来获取您自己的 UID 列表,然后根据该 UID 列表找出您想要的索引。

var uids = client.GetMessageUids ();
var indexes = new List<int> ();

for (int i = 0; i < uids.Length, i++) {
    if (!HaveSeen (uids[i]))
        indexes.Add (i);
}

// now you have a list of indexes that you want

推荐阅读