Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Node.js IMAP模块中从正文中获取纯文本_Javascript_Html_Node.js_Imap_Node Modules - Fatal编程技术网

Javascript 如何在Node.js IMAP模块中从正文中获取纯文本

Javascript 如何在Node.js IMAP模块中从正文中获取纯文本,javascript,html,node.js,imap,node-modules,Javascript,Html,Node.js,Imap,Node Modules,我正在使用Node.js的IMAP模块解析IMAP电子邮件的正文。我可以将主体作为原始HTML数据返回给我,但这包括标记和其他不必要的数据。我想要输入的文本(删除任何div、样式等) 以下是我当前使用的代码: openInbox(function(err, box) { if (err) throw err; var f = imap.seq.fetch(box.messages.total + ':*', { bodies: ['HEADER.FIELDS (FROM)

我正在使用Node.js的IMAP模块解析IMAP电子邮件的正文。我可以将主体作为原始HTML数据返回给我,但这包括标记和其他不必要的数据。我想要输入的文本(删除任何div、样式等)

以下是我当前使用的代码:

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 + '\n\nBody [%s] found, %d total bytes\n\n\n', inspect(info.which), info.size);
          var buffer = '', count = 0;
          stream.on('data', function(chunk) {
            count += chunk.length;
            buffer += chunk.toString('utf8');
            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));
            console.log('\n\n\n\n'+buffer.toString()+'\n\n\n\n\n\n');
          });
        });
        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();
      });
    });

有没有一种方法可以解析为纯文本,而不需要任何标记或其他HTML信息?

有一个节点模块专门用于此:

var htmlotext=require('html-to-text');
var text=htmlotext.fromString('Hello World'{
文字包装:130
});
console.log(文本);

它还可以很好地将表格解析为文本。

对于本书的未来读者,
node imap
实际上为大多数电子邮件检索一个
text
字段,其中包含无任何HTML标记的纯文本版本。您可以通过
object.text
简单地访问它。
var htmlToText = require('html-to-text');

var text = htmlToText.fromString('<h1>Hello World</h1>', {
    wordwrap: 130
});
console.log(text);