2016-08-12 66 views
1

我正在处理一个电子邮件项目。我想像gmail一样在线程中显示电子邮件。可靠和准确的电子邮件线程结构?

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

我已经选择jwz threading algorithm。但是看起来这个算法是为没有数据库的项目编写的。这个算法专注于这三个头部键。 Message-ID,In-Reply-ToReferences

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

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

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

谢谢。

回答

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建立的