Ruby on rails Rails Griddler和会话/电子邮件线程

Ruby on rails Rails Griddler和会话/电子邮件线程,ruby-on-rails,email,ruby-on-rails-4,email-threading,griddler,Ruby On Rails,Email,Ruby On Rails 4,Email Threading,Griddler,我正在努力找出如何最好地连接/连接电子邮件链。这似乎是一个如此普遍的问题,以至于我很惊讶我不能轻易找到其他人如何处理它的信息。我发现的唯一一件事是一篇文章,它看起来更关注于在一封电子邮件中解析一个线程。我想知道是否有人能给我指出一些当前的解决方案 我正在使用thoughtbot将传入的电子邮件处理为一个模型消息和一个单独的模型联系人,我还有第三个模型用于存储回复,例如回复 我目前的想法是通过独特的接触和主题线来贯穿他们。但是,主题线也会有轻微的变化。e、 g.从“This subject”->“

我正在努力找出如何最好地连接/连接电子邮件链。这似乎是一个如此普遍的问题,以至于我很惊讶我不能轻易找到其他人如何处理它的信息。我发现的唯一一件事是一篇文章,它看起来更关注于在一封电子邮件中解析一个线程。我想知道是否有人能给我指出一些当前的解决方案

我正在使用thoughtbot将传入的电子邮件处理为一个模型
消息
和一个单独的模型
联系人
,我还有第三个模型用于存储回复,例如
回复

我目前的想法是通过独特的接触和主题线来贯穿他们。但是,主题线也会有轻微的变化。e、 g.从“This subject”->“Re:Re:This subject”我可以使用正则表达式来尝试解析“Re:”s,或者我可以使用类似于字符串比较的东西

但是,同样的问题是,对于2个月后出现在同一用户身上的同一主题,该怎么办?还添加一些关于当前日期的逻辑,以便线程只使用最近的电子邮件。那么,电子邮件头本身可能还存储了其他有用的东西

  • 用户(通过唯一的电子邮件地址)
  • 唯一主题行(regex re:处理问题?)
  • 当前日期(电子邮件必须是彼此相关的日期)
  • 在邮件标题中寻找其他线索
我对如何做到这一点有大致的想法,我只是好奇地想看看当前的一些实现,但似乎找不到任何实现


任何指点都将不胜感激

电子邮件线程是一个链接列表,标题中的信息包含足够的信息,可以从列表的组成部分重构列表

反思电子邮件标题并查找一些特定的标题

您将使用的关键代码是
消息ID
回复
引用
。这些标题为您提供有关回复了哪封邮件以及其他ID对电子邮件线程本身有什么影响的信息

查找电子邮件标题信息的最简单方法是在gmail中打开“原始邮件”(从“更多”菜单)。

有一个新的gem命名,它是JWZ算法的一个实现。它没有匹配的主题,发件人或日期,所以它不完全是你要找的,但我认为这是一个好的开始

关于
Msgthr
最简单的一点是它与容器无关,因此您不必像Frederik Dietz的ruby端口那样安装
TMail
之类的要求。这也意味着它可以用于其他类型的通信

下面是一些示例代码,给出了消息列表,让我们将它们分组到线程中:

thr = Msgthr.new
threads = {}
[1, 11, 12, 2, 21, 211].each{ |id| threads[id] = [id]}
my_add = lambda do |id, refs, msg|
  thr.add(id, refs, msg) do |parent, child|
    threads[child.mid] = threads[parent.mid]
  end
end
# Create the following structure
# 1
#  \
#  | 1.1
#  \
#    1.2
# 2
#   \
#    2.1
#       \
#         2.1.1
my_add.call(1, nil, '1')
my_add.call(11, [1], '1.1')
my_add.call(12, [1], '1.2')
my_add.call(2, nil, '2')
my_add.call(21, [2], '2.1')
my_add.call(211, [21], '2.1.1')

thr.thread!
thr.rootset.each do |cnt|
  threads[cnt.mid][0] = cnt.msg
end

披露:我是gem的贡献者之一。

是否可以使用所述的“消息ID”标题来关联消息?是否有理由不将其托管在github上?@csch0