10
我使用node-imap從gmail帳戶檢索到新電子郵件。我如何讓節點工作人員等待任何新郵件並立即採取行動而不是cron作業?使用node-imap nodejs獲取新電子郵件
我不想每隔幾分鐘就打一次頁面,這種打敗了節點js的目的。
這裏是我到目前爲止的代碼
var Imap = require('imap'),
inspect = require('util').inspect;
var imap = new Imap({
user: '[email protected]',
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();
謝謝!我發現了一個更好的解決方案Mail Listener library https://npmjs.org/package/mail-listener2 –
jack dre @我使用節點版本0.10.11,但郵件監聽器2不工作... – silvesterprabu
@silvesterprabu你可以提出一個問題在github上,如果它仍然不能正常工作 –