电子邮件的可靠且准确的线程结构?

时间:2016-08-12 01:14:29

标签: mysql algorithm email

我正在开发一个电子邮件项目。我想在线程中显示电子邮件,就像gmail一样。

在线程中显示邮件的最佳方法是什么?

我查了jwz threading algorithm。但看起来该算法是为没有数据库的项目编写的。该算法侧重于这三个标题键。 Message-IDIn-Reply-ToReferences

有人能告诉我使用mysql数据库实现线程的正确,有效和最准确的方法是什么。

我是否必须为线程和引用使用单独的表?

如果可能的话,给我一些示例mysql查询。所以我可以更好地理解。

谢谢。

1 个答案:

答案 0 :(得分:0)

任何留言板设计(例如wordpress等)也适用于电子邮件。我也想出了一个设计:

email.id user_id subject status  folder created updated ...other info you'd save
1        123     Hello   New     Inbox  Y-m-d.. Y-m-d.. ...
2        3456    World   Replied Inbox  ...

reply.id email_id reply_to_id user_id created email_txt ip ...
10       1        0           890     Y-m-d.. Hi ...
20       2        0           5678    ...
30       2        20          3456    ...     Replyto 2
55       2        30          5678    ....    Replyto 3

所以在你的email.folder.index页面中:

SELECT * FROM email WHERE user_id = 12345 ORDER BY updated desc LIMIT 50

当您在索引页面上单击一封电子邮件时,请转到电子邮件详细信息页面:

SELECT * FROM reply WHERE email_id = 2 ORDER BY created, reply_to_id

关键的神奇之处在于树是基于reply_to_id构建的