1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Make Imap node always read once on start

Closes Issue #96

Imap node now logs (in console) if it finds duplicate email on read or not.
It doesn't send on duplicates. It also now DOES fire once on startup AND re-deploy to populate anything downstream... at least that is the excuse for the change.

Signed-off-by: Dave C-J <dave@conway-jones.co.uk>
This commit is contained in:
Dave C-J 2013-11-29 19:16:11 +00:00
parent 0bc0dc3a2b
commit 399617dc58

View File

@ -17,7 +17,6 @@
var RED = require(process.env.NODE_RED_HOME+"/red/red"); var RED = require(process.env.NODE_RED_HOME+"/red/red");
var Imap = require('imap'); var Imap = require('imap');
var util = require('util'); var util = require('util');
var oldmail = {};
try { try {
var emailkey = RED.settings.email || require(process.env.NODE_RED_HOME+"/../emailkeys.js"); var emailkey = RED.settings.email || require(process.env.NODE_RED_HOME+"/../emailkeys.js");
@ -45,6 +44,7 @@ function ImapNode(n) {
this.repeat = n.repeat * 1000 || 300000; this.repeat = n.repeat * 1000 || 300000;
var node = this; var node = this;
this.interval_id = null; this.interval_id = null;
var oldmail = {};
if (!isNaN(this.repeat) && this.repeat > 0) { if (!isNaN(this.repeat) && this.repeat > 0) {
node.log("repeat = "+this.repeat); node.log("repeat = "+this.repeat);
@ -97,9 +97,10 @@ function ImapNode(n) {
if (JSON.stringify(pay) !== oldmail) { if (JSON.stringify(pay) !== oldmail) {
node.send(pay); node.send(pay);
oldmail = JSON.stringify(pay); oldmail = JSON.stringify(pay);
node.log('sent new message: '+pay.topic);
} }
else { node.log('duplicate not sent: '+pay.topic); }
imap.end(); imap.end();
node.log('done fetching message');
}); });
}); });
}); });
@ -110,18 +111,15 @@ function ImapNode(n) {
util.log(err); util.log(err);
}); });
imap.on('end', function() { this.on("error", function(err) {
//util.log('Connection ended'); node.log("error: ",err);
}); });
this.on("close", function() { this.on("close", function() {
if (this.interval_id != null) { if (this.interval_id != null) {
clearInterval(this.interval_id); clearInterval(this.interval_id);
} }
}); imap.destroy();
this.on("error", function(err) {
node.log("error: ",err);
}); });
node.emit("input",{}); node.emit("input",{});