我使用 node-imap 从 gmail 帐户检索了新电子邮件。如何让节点工作人员等待任何新电子邮件并立即采取行动而不是 cron 作业?
我不想每隔几分钟就一直点击页面,这有点违背了节点 js 的目的。
到目前为止,这是我的代码
var Imap = require('imap'),
inspect = require('util').inspect;
var imap = new Imap({
user: 'yyyy@gmail.com',
password: 'xxxx',
host: 'imap.gmail.com',
port: 993,
tls: true,
tlsOptions: { rejectUnauthorized: false }
});
var fs = require('fs'), fileStream;
function openInbox(cb) {
imap.openBox('INBOX', false, cb);
}
imap.once('ready', function() {
openInbox(function(err, box) {
if (err) throw err;
imap.search([ 'UNSEEN', ['SINCE', 'October 2, 2013'] ], function(err, results) {
if (err) {
console.log('you are already up to date');
}
var f = imap.fetch(results, { bodies: '' });
f.on('message', function(msg, seqno) {
console.log('Message #%d', seqno);
var prefix = '(#' + seqno + ') ';
msg.on('body', function(stream, info) {
console.log(prefix + 'Body');
stream.pipe(fs.createWriteStream('msg-' + seqno + '-body.txt'));
});
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.connect();