nodejs取得メール


npm install map
npm install mail parser
var Imap = require('imap');
var inspect = require('util').inspect;
var Mailparser = require('mailparser').MailParser;
var fs = require('fs');


var imap = new Imap({
	user: '[email protected]',
	password: 'password',
	host: 'imap.163.com',
	port: '993',
	tls: true
});

function openIndex(cb) {
	imap.openBox('INBOX',true,cb) ;
}

imap.once('ready', function() {
    openIndex(function(err, box){
        //    : 2015/7/28     
        imap.search(['UNSEEN', ['SINCE', 'July 28, 2015']], function(err, results){
            console.log(results);
            if(err) console.log( 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){

                      	 // mail             html   
                         fs.writeFile('msg-'+seqno+'-body.html',mail.html,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();