2017-04-12 73 views
1

我正嘗試使用此conversationThreading-js代碼將電子郵件分組爲線程,但文檔很少和/或我無法理解它。有沒有人使用過這段代碼或使用了它所基於的JWZ email conversation threading algorithm任何人都可以解釋如何使用conversationThreading-js?

這是我在哪裏到目前爲止:

  1. 使用電子我負荷和本地mbox使用node-mboxnode-mailparser
  2. 我建立其具有messageId關鍵值對的javascript對象數組解析,inReplyToreferences
  3. 使用來自test file for this lib的示例代碼我嘗試構建線程,但顯然我做得不對。我沒有得到任何錯誤,但我也沒有得到任何線程(我的測試mbox確實包含線程化對話)。

也許我誤解了結果應該是什麼?或者我只是「做錯了」?我的最終目標是能夠使用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

這是很清楚它是如何工作的,但我設法寫一些代碼,打印 「主題樹」:

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)); 

messages是一組jwz.message()對象,與您創建對象類似)

相關問題