我正在开发一个电子邮件项目。我想在线程中显示电子邮件,就像gmail一样。
在线程中显示邮件的最佳方法是什么?
我查了jwz threading algorithm。但看起来该算法是为没有数据库的项目编写的。该算法侧重于这三个标题键。 Message-ID
,In-Reply-To
和References
有人能告诉我使用mysql数据库实现线程的正确,有效和最准确的方法是什么。
我是否必须为线程和引用使用单独的表?
如果可能的话,给我一些示例mysql查询。所以我可以更好地理解。
谢谢。
答案 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构建的