MessageSummaryItems.Id与MessageSummaryItems.Envelope.MessageId与MessageId.GMailMessageId与MessageSummaryItems.UniqueId

时间:2019-07-23 14:25:07

标签: mailkit

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

我已经查看了文档,但是找不到完整的说明。

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

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

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

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

我想要更多有关这些ID的说明吗?

1 个答案:

答案 0 :(得分:1)

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

MessageSummaryItems.Envelope.MessageIdMessage-Id标头值。

MessageSummaryItems.GMailMessageId是特定于GMail的标识符,类似于UniqueId,但在您的帐户中是全局唯一的。

UniqueId是唯一标识符,但特定于文件夹。换句话说,UniqueId文件夹中5INBOX的消息与{{1}中UniqueId5的消息是不同的例如1}}文件夹。

但是,在GMail上,StarredINBOXGMailMessageId的邮件与5文件夹中具有相同{{1 }}。他们都将引用完全相同的消息。

要了解为什么会这样,GMail实际上只有 all 个邮件所在的文件夹(Starred)。您的所有其他文件夹,包括GMailMessageIdAll MailINBOX等,都是Drafts文件夹的虚拟视图,这些视图过滤掉了所有没有相应消息的消息Gmail Sent

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