1

我正在 Django/Python 中创建一个 GMail 电子邮件界面。我想创建所有电子邮件的骨架,包含主题和日期,一种概览级别的索引,这样即使删除了一封电子邮件,我也有一个指示它存在以及何时发送。

我的问题是,考虑到 IMAP UID 发生了变化,我可以使用什么作为唯一的电子邮件标识符?即使我在我的数据库中使用唯一 ID 创建每封电子邮件的骨架,如果我将电子邮件 UID 和 IMAP 文件夹名称关联到它,当其他电子邮件被删除时,UID 可能会更改。

为电子邮件创建唯一标识符的最佳解决方案是什么?我正在考虑使用(发送日期,主题)组合,但我正在寻找更简单的东西。

有人可以帮忙吗?

谢谢

4

2 回答 2

1

我的理解是 UID 不会改变......所以应该可以将它用作 IMAP/您的数据库之间的链接。

来自 RFC3501(更新 RFC822)- http://www.limilabs.com/mail/rfc/3501

2.3.1.1。唯一标识符 (UID) 消息属性

分配给每条消息的 32 位值,当与
唯一标识符有效性值(见下文)一起使用时,形成一个 64 位值
,该值不得
永远引用邮箱中的任何其他消息或任何具有相同名称的后续邮箱。唯一标识符
在邮箱中以严格的升序方式分配;当每条
消息被添加到邮箱时,它被分配一个比
之前添加的消息更高的 UID。与消息序列
号不同,唯一标识符不一定是连续的。

消息的唯一标识符在
会话期间不得更改,并且不应在会话之间更改。
会话之间唯一标识符的任何更改都必须使用
下面讨论的 UIDVALIDITY 机制来检测。

于 2012-11-27T22:48:23.550 回答
0

我发现每个文件夹都有自己的 UID 种子,这意味着您将在不同文件夹中为不同的邮件拥有重复的 UID。RFC822 指定了另一个标识符,邮件的 Message-ID 标头,通常是自动生成的(例如 Gmail),您可以在邮件移动后使用它来修复您的 UID。IMAP 支持查询特定字段,如 UID、MessageID。

使用此组合键,您始终可以跟踪系统中的每条消息。

如果您自己进行发送,您可以生成自己的 MessageID。以下是如何生成它:

http://www.jwz.org/doc/mid.html

更多阅读:

http://en.wikipedia.org/wiki/Message-ID

于 2014-03-28T10:39:55.883 回答