IMAPMessage.getUID()和Message-ID标头之间有什么区别?

Ani*_*jee 2 imap jakarta-mail

从Java邮件角度来看,这两者之间有什么区别?我可以看到,对于一条特定消息,2个值不相同。那么,我应该考虑IMAP消息的唯一ID?

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

MessageIDTerm
Run Code Online (Sandbox Code Playgroud)

要么

IMAPFolder.getMessageByUID()
Run Code Online (Sandbox Code Playgroud)

San*_*ija 5

UID是中的电子邮件的唯一标识号IMAP folder。文件夹中的每个邮件都分配有一个uid,可以说是由邮件文件夹维护的索引。虽然message-idheader一个电子邮件的一部分。

简单来说, UID是一个唯一的数字,不能在文件夹中重复。如果我在文件夹中复制同一封电子邮件两次,则每封邮件将具有相同的标头和相同的邮件ID,但具有不同的UID。

其他主要区别是

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

因此,始终最好依靠UID提取电子邮件。

参考:RFC-UID

  • 请求UID的速度也更快:它是服务器的本机索引。搜索Message-ID标头可能会退化为所有电子邮件的文本搜索。 (2认同)