1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| var UTIL = require("util"); var HTTP = require("http"); var HTTPS = require("https"); var URL = require("url"); var HTMLPARSER = require("htmlparser2"); var FORMDATA = require("form-data"); var IMAP = require('imap'); var INSPECT = require('util').inspect; var MAILPARSER = require('mailparser').MailParser; var fs = require('fs'), fileStream;
var imap = new IMAP({ user:'[email protected]', password:'password', host:'imap.qq.com', port:'993', tls:true });
function openInbox(cb){ imap.openBox('INBOX',true,cb); }
imap.once('ready', function() { openInbox(function(err, box) { imap.search([ 'SEEN', ['BEFORE', '2015-05-10'] ], function(err, results) { console.log(results); if (err) throw err; var f = imap.fetch(results, { bodies: '', struct: true }); f.on('message', function(msg, seqno) { console.log('Message #%d', seqno); var prefix = '(#' + seqno + ') '; msg.on('body', function(stream, info) { console.log('INFO WHICH:',info.which); if (info.which === 'TEXT'){ console.log(prefix + 'Body [%s] found, %d total bytes', INSPECT(info.which), info.size); } var mailparser = new MAILPARSER(); stream.pipe(mailparser); mailparser.on("end",function( mail ){ fs.writeFile('msg-' + seqno + '-body.html', mail.text, function (err) { if (err) throw err; console.log(prefix + 'saved!'); }); }); }); 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(); }); }); }); }); imap.once('error', function(err) { console.log(err); }); imap.once('end', function() { console.log('Connection ended'); }); imap.connect();
|