首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Griddler和会话/电子邮件线程

Rails Griddler和会话/电子邮件线程
EN

Stack Overflow用户
提问于 2015-06-11 07:47:10
回答 2查看 1.2K关注 0票数 17

我正在努力找出如何最好地连接/线程一串电子邮件。这似乎是一个很常见的问题,让我感到惊讶的是,我很难找到其他人如何处理这个问题的信息。我发现的唯一一件事是关于JWZ线程的一篇文章,它看起来更关心在一封电子邮件中一起解析一个线程。我想知道是否有人能给我指出一些目前的解决方案。

我正在使用thoughtbot griddler宝石将传入的电子邮件处理成一个模型Message(s)和一个单独的模型Contact(s),我还有第三个模型用于存储回复,例如Reply

我目前的想法是通过独特的接触和主题线将它们联系起来。但话又说回来,主题行会略有变化。例如,从"This -> "Re: re: This subject“我可以使用regex来尝试解析"re:"s或我可以使用类似舱口的东西来进行字符串比较吗?

但话又说回来,两个月后,对于同一个用户出现的同一主题,该怎么办呢?还添加一些关于当前日期的逻辑,以便线程只使用最近的电子邮件。那么,在电子邮件标题本身中可能还有其他有用的东西吗?

  • 用户(通过唯一的电子邮件地址)
  • 唯一的主题行(regex re:处理问题?)
  • 当前日期(电子邮件必须是相对于对方的日期)
  • 在电子邮件标题中还需要寻找其他线索吗?

我对如何做它有大致的想法,我只是好奇地看到一些当前的实现,我只是找不到任何东西。

任何指点都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 05:45:08

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

内省电子邮件的标题,并寻找一些特定的标题。

您将使用的关键是Message-IDIn-Reply-ToReferences。这些标头为您提供了有关回复哪条消息以及其他ids对电子邮件线程本身有什么影响的信息。

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

票数 7
EN

Stack Overflow用户

发布于 2018-01-27 22:24:28

有一个名为姆斯格特的新gem,它是一个实现JWZ的算法。它不是匹配的主题,发送者或日期,所以这并不完全是你想要的,但我认为这是一个好的开始。

Msgthr最整洁的地方在于它与容器无关,因此您不必安装诸如TMail这样的需求,就像Frederik的ruby端口中的那样。这也意味着它可以用于其他类型的通信。

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

代码语言:javascript
复制
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

披露:我是创业板的贡献者之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30774709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档