MessageSummaryItems.Id 对比 MessageSummaryItems.Envelope.MessageId 对比 MessageId.GMailMessageId 对比 MessageSummaryItems.UniqueId

MessageSummaryItems.Id vs MessageSummaryItems.Envelope.MessageId vs MessageId.GMailMessageId vs MessageSummaryItems.UniqueId

我正在使用 MailKit 从 Gmail 帐户中检索电子邮件。但是,我对电子邮件的 ID 感到困惑。

我已经查看了文档,但找不到完整的解释。

比如我注意到UniqueId,其实不是唯一的;我的意思是,如果我将一封电子邮件移动到一个特定的文件夹并获取该电子邮件,它有一个 ID(比如 1)。然后,如果我从文件夹中删除该电子邮件并将其再次添加到它获得的文件夹和其他 UniqueId(例如 2)!

当我尝试获取 MessageSummaryItems.Id 时,我的电子邮件的值为空。

MessageSummaryItems.GMailMessageId 的值是一个很大的数字,我不知道它是否真的唯一分配给该电子邮件。

MessageSummaryItems.Envelope.MessageId 的值似乎是该电子邮件的全球唯一 ID。

我想要更多关于这些 ID 的解释?

GMail 不支持 OBJECTID 扩展名,因此 MessageSummaryItems.Id 永远不会得到任何东西(例如返回的 IMessageSummary.Id 将始终是 null)。

MessageSummaryItems.Envelope.MessageIdMessage-Id header 值。

MessageSummaryItems.GMailMessageId 是一个 GMail-specific 标识符,与 UniqueId 类似,但对您的帐户来说是全球唯一的。

一个UniqueId是一个唯一标识符,但是是folder-specific。换句话说,INBOX 文件夹中 UniqueId5 的邮件与 5UniqueId5 的邮件不同24=] 文件夹,例如。

但是,在 GMail 上,INBOXGMailMessageId5 的邮件与 Starred 文件夹中具有相同 GMailMessageId。他们将引用完全相同的消息。

要了解这是为什么,GMail 实际上只有 1 个文件夹 (All Mail),您的 所有 邮件都位于该文件夹中。您的所有其他文件夹,包括 INBOXDraftsSent 等,只是 All Mail 文件夹的虚拟视图,用于过滤掉所有没有相应文件夹的邮件GMail Label.

这就是为什么如果您为一组邮件添加标签,它们将显示在您的 INBOX 中以及创建的与您刚刚创建的标签名称相匹配的新文件夹中。