任何人都可以解释如何使用conversationThreading-js吗?

时间:2017-04-12 17:35:02

标签: javascript email

我正在尝试使用此conversationThreading-js代码将电子邮件分组到线程中,但文档很少和/或我无法理解它。有没有人在使用此代码之前或使用它所基于的JWZ email conversation threading algorithm

这是我到目前为止的地方:

  1. 使用Electron I加载并使用node-mboxnode-mailparser解析本地mbox
  2. 我构建了一组javascript对象,其键值对为messageIdinReplyToreferences
  3. 使用test file for this lib中的示例代码我尝试构建线程,但显然我做得不对。我没有错误,但我也没有线程(我的测试mbox确实包含线程对话)。
  4. 也许我误解了结果应该是什么?或者我只是“做错了”?我的最终目标是能够使用D3在某种有向图中显示结果线程 - 但如果我无法正确设置数据,那就不会发生。

          function makeThread(emails) {
            var thread = jwz.messageThread().thread(emails.map(
                function (message) {
                    return jwz.message(message.subject, message.messageId, message.references);
                }
            ));
    
            console.log('thread',thread);
           }
    

    enter image description here

1 个答案:

答案 0 :(得分:1)

目前还不清楚它是如何工作的,但我设法写了一些打印“线程树”的代码:

function recurse(node, level) {
  level      = level || 0;
  let prefix = '\t'.repeat(level);

  (node.children || []).forEach(function(child) {
    child.children = child.children || [];
    console.log(prefix, level ? '' : '-', child.message ? child.message.subject : '??', `[${ child.children.length }]`);
    return recurse(child, level + 1);
  });
}

recurse(jwz.messageThread().thread(messages));

messagesjwz.message()个对象的数组,类似于您创建它的方式)