IMAPMessage.getUID() 和 Message-ID header 有什么区别?

What is the difference between IMAPMessage.getUID() and Message-ID header?

从java邮件的角度来看,这两者有什么区别?我可以看到特定消息的 2 个值不相同。那么我应该如何看待 IMAP 邮件的唯一 ID?

如果我需要从与唯一 ID 相对应的 IMAP 服务器获取消息,我应该使用吗?

MessageIDTerm

IMAPFolder.getMessageByUID()

UIDIMAP folder中一封邮件的唯一标识号。文件夹中的每封邮件都分配了一个 uid,可以说是邮件文件夹维护的索引。而 message-id 是电子邮件的 header 部分。

简单来说, UID 是一个唯一编号,在一个文件夹中不能重复。如果我在一个文件夹中复制同一封电子邮件两次,每封邮件都会有相同的邮件头和相同的邮件 ID,但会有不同的 UID。

其他主要区别是,

  • UID 由 imap 服务器分配
  • MessageId 由电子邮件设置 客户.

所以最好依靠 UID 来提取电子邮件。

参考:RFC - UID