From 399617dc585edc4af047c3272a6c5c25615acbc5 Mon Sep 17 00:00:00 2001 From: Dave C-J Date: Fri, 29 Nov 2013 19:16:11 +0000 Subject: [PATCH] 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 --- nodes/core/social/61-imap.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/nodes/core/social/61-imap.js b/nodes/core/social/61-imap.js index 1ceb11344..628eb0d1c 100644 --- a/nodes/core/social/61-imap.js +++ b/nodes/core/social/61-imap.js @@ -17,7 +17,6 @@ var RED = require(process.env.NODE_RED_HOME+"/red/red"); var Imap = require('imap'); var util = require('util'); -var oldmail = {}; try { 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; var node = this; this.interval_id = null; + var oldmail = {}; if (!isNaN(this.repeat) && this.repeat > 0) { node.log("repeat = "+this.repeat); @@ -97,9 +97,10 @@ function ImapNode(n) { if (JSON.stringify(pay) !== oldmail) { node.send(pay); oldmail = JSON.stringify(pay); + node.log('sent new message: '+pay.topic); } + else { node.log('duplicate not sent: '+pay.topic); } imap.end(); - node.log('done fetching message'); }); }); }); @@ -110,18 +111,15 @@ function ImapNode(n) { util.log(err); }); - imap.on('end', function() { - //util.log('Connection ended'); + this.on("error", function(err) { + node.log("error: ",err); }); this.on("close", function() { if (this.interval_id != null) { clearInterval(this.interval_id); } - }); - - this.on("error", function(err) { - node.log("error: ",err); + imap.destroy(); }); node.emit("input",{});