From 9ac9c4ed23dfa8a0740852192e4b414e8cd4df7b Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 13 May 2017 20:43:54 +0200 Subject: attach image to email, also upload it --- lib/awmail/index.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'lib/awmail/index.js') diff --git a/lib/awmail/index.js b/lib/awmail/index.js index 4bfd08e..f5ed12b 100644 --- a/lib/awmail/index.js +++ b/lib/awmail/index.js @@ -5,6 +5,8 @@ var htmlTemplate = fs.readFileSync('templates/email.html', 'utf8') var textTemplate = fs.readFileSync('templates/email.txt', 'utf8') var mailgun = require('mailgun.js') var request = require('request') +var multer = require('multer') +var Readable = require('stream').Readable /* awmail: { @@ -28,6 +30,7 @@ function AWMail (options) { var router = express.Router() var config = options.config + var mult = multer() var engine = new Liquid.Engine var mg = mailgun.client({ @@ -35,13 +38,12 @@ function AWMail (options) { key: process.env.MAILGUN_API_KEY, }) - router.post('/send', function (req, res) { + router.post('/send', mult.single('image'), function (req, res) { res.header('Access-Control-Allow-Origin', '*') res.header('Access-Control-Allow-Headers', 'X-Requested-With') var email = req.body.email var track = req.body.track - var hash = req.body.hash var secret = req.body.secret if (! hash || secret !== config.secret) { @@ -49,6 +51,11 @@ function AWMail (options) { } deferToNextTick().then(function(){ + console.log("upload image") + return uploadImage({ + file: req.file, + }) + }).then(function(){ console.log("parse templates") var templateData = { email: email, @@ -58,10 +65,11 @@ function AWMail (options) { }).then(function(mailData){ console.log("send mail") mailData.email = email + mailData.image = req.file return sendMail(mailData) }).then(function(){ console.log("store email") - if (track) { + if (String(track) === 'true') { return storeEmail(email) } else { return Q.Promise(function(resolve, reject, notify) { resolve() }) @@ -109,13 +117,12 @@ function AWMail (options) { }) } -/* function uploadImage (data){ return Q.Promise(function(resolve, reject, notify) { upload.put({ file: data.file, preserveFilename: false, - dirname: "nars/mail", + dirname: "armory/mail", types: { 'image/gif': 'gif', 'image/jpeg': 'jpg', @@ -131,7 +138,6 @@ function AWMail (options) { }) }) } -*/ function parseTemplates (data){ return Q.Promise(function(resolve, reject, notify) { @@ -147,12 +153,19 @@ function AWMail (options) { } function sendMail (content){ + var s = new Readable() + s._read = function noop() {} + s.path = 'face.jpg' + s.push(content.image) + s.push(null) + return mg.messages.create(config.domain, { from: config.from, to: [content.email], subject: config.subject, text: content.text, html: content.html, + inline: [image], }) } -- cgit v1.2.3-70-g09d2