From c0842455b949f6dc73847749102d276ca51a61a2 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Mon, 18 Aug 2014 15:47:37 +0100 Subject: [PATCH] Update email node to use nodemailer 1.x api Fixes #334 --- nodes/core/social/61-email.js | 40 ++++++++++++++++------------------- package.json | 4 +++- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/nodes/core/social/61-email.js b/nodes/core/social/61-email.js index 30c6f66e8..e7a4a56a9 100644 --- a/nodes/core/social/61-email.js +++ b/nodes/core/social/61-email.js @@ -18,12 +18,7 @@ module.exports = function(RED) { "use strict"; var util = require('util'); var nodemailer = require("nodemailer"); - var Imap = null; - try { - Imap = require('imap'); - } catch (e) { - util.log("[61-email.js] - imap npm not installed - no inbound email available"); - } + var Imap = require('imap'); //console.log(nodemailer.Transport.transports.SMTP.wellKnownHosts); @@ -51,16 +46,10 @@ module.exports = function(RED) { if (flag) { RED.nodes.addCredentials(n.id,{userid:this.userid, password:this.password, global:true}); } var node = this; - var smtpTransport = nodemailer.createTransport("SMTP",{ - //service: emailkey.service, - // { - //transport: 'SMTP', + var smtpTransport = nodemailer.createTransport({ host: node.outserver, port: node.outport, - requiresAuth: true, - secureConnection: true, - //domains: [ 'gmail.com', 'googlemail.com' ], - //}, + secure: true, auth: { user: node.userid, pass: node.password @@ -69,19 +58,28 @@ module.exports = function(RED) { this.on("input", function(msg) { if (msg != null) { - node.status({fill:"blue",shape:"dot",text:"sending"}); if (smtpTransport) { + node.status({fill:"blue",shape:"dot",text:"sending"}); + var payload = msg.payload; + if (Buffer.isBuffer(payload)) { + payload = payload.toString(); + } else if (typeof payload === "object") { + payload = JSON.stringify(payload); + } else if (typeof payload !== "string") { + payload = ""+payload; + } + smtpTransport.sendMail({ from: node.userid, // sender address to: node.name, // comma separated list of receivers subject: msg.topic, // subject line - text: msg.payload // plaintext body - }, function(error, response) { + text: payload // plaintext body + }, function(error, info) { if (error) { node.error(error); - node.status({fill:"red",shape:"ring",text:"post error"}); + node.status({fill:"red",shape:"ring",text:"send failed"}); } else { - node.log("Message sent: " + response.message); + node.log("Message sent: " + info.response); node.status({}); } }); @@ -217,9 +215,7 @@ module.exports = function(RED) { node.emit("input",{}); } - if (Imap != null) { - RED.nodes.registerType("e-mail in",EmailInNode); - } + RED.nodes.registerType("e-mail in",EmailInNode); var querystring = require('querystring'); diff --git a/package.json b/package.json index a89edbc7d..b736bcf8a 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,9 @@ "cors":"2.2.0", "mkdirp":"0.3.5", "cheerio":"0.15.0", - "uglify-js":"2.4.13" + "uglify-js":"2.4.13", + "nodemailer":"1.2.0", + "imap":"0.8.13" }, "devDependencies": { "grunt": "0.4.4",