2014-07-24 74 views
0

我正在使用node-imap npm模塊獲取電子郵件,並且我收到的消息幾乎都是msg的內容。 我用了一個已經提供例如在他們的混帳,下面如何使用node-imap模塊獲取消息正文

openInbox(function(err, box) { 
    if (err) throw err; 
    var f = imap.seq.fetch(box.messages.total + ':*', { bodies: ['HEADER.FIELDS  (FROM)','TEXT'] }); 
    f.on('message', function(msg, seqno) { 
     console.log('Message #%d', seqno); 
     var prefix = '(#' + seqno + ') '; 
     msg.on('body', function(stream, info) { 
      if (info.which === 'TEXT') 
      console.log(prefix + 'Body [%s] found, %d total bytes', inspect(info.which), info.size); 
      var buffer = '', count = 0; 
      stream.on('data', function(chunk) { 
       count += chunk.length; 
       buffer += chunk.toString('utf8'); 
       console.log('BUFFER', buffer) //HEre i am able to view the body 
       if (info.which === 'TEXT') 
        console.log(prefix + 'Body [%s] (%d/%d)', inspect(info.which),   count, info.size); 
      }); 
      stream.once('end', function() { 
       if (info.which !== 'TEXT') 
        console.log(prefix + 'Parsed header: %s', inspect(Imap.parseHeader(buffer))); 
       else 
        console.log(prefix + 'Body [%s] Finished', inspect(info.which)); 
      }); 
     }); 
     msg.once('attributes', function(attrs) { 
      console.log(prefix + 'Attributes: %s', inspect(attrs, false, 8)); 
     }); 
     msg.once('end', function() { 
      console.log(prefix + 'Finished'); 
     }); 
    }); 
    f.once('error', function(err) { 
     console.log('Fetch error: ' + err); 
    }); 
    f.once('end', function() { 
     console.log('Done fetching all messages!'); 
     imap.end(); 
    }); 
}); 

所示。在這個例子中,我能夠安慰了味精的內容,但我無法使其恢復爲JSON。

回答

1

返回的值是buffer。如果你想要一個字符串,你可以撥打buffer上的toString()方法。你說你想要JSON。如果電子郵件正文格式正確JSON您還可以對其進行解碼:

var json = JSON.parse(buffer.ToString()); 
相關問題