import Settings, { SETTINGS_FILE } from '../../data/Settings'; import Auth from '../../data/Auth'; var express = require('express'); var router = express.Router(); var nodemailer = require('nodemailer'); var mg = require('nodemailer-mailgun-transport'); const pug = require('pug'); const settings = new Settings(); const auth = new Auth(); router.post('/', function (req, res) { auth.authCheck(req) .then(() => { settings .load(SETTINGS_FILE) .then(settings => { let transport = ''; var auth = ''; switch (settings.email.active) { case 'option-smtp': auth = { host: settings.email.smtp.domain, port: 587, secure: false, auth: { type: 'login', user: settings.email.smtp, pass: settings.email.smtp.password } }; transport = nodemailer.createTransport(auth); break; case 'option-mg': auth = { auth: { api_key: settings.email.mailgun.key, domain: settings.email.mailgun.domain } }; transport = nodemailer.createTransport(mg(auth)); break; } let render = pug.compileFile('brain/views/email/base.pug'); let html = render({ title: settings.global.title, header: 'a note from ' + settings.global.title, content: req.body.content, footer: 'powered by fipamo' }); transport.sendMail( { from: 'control@playvico.us', to: req.session.user.email, // An array if you have multiple recipients. subject: 'Hey beautiful', //You can use "html:" to send HTML email content. It's magic! html: html //You can use "text:" to send plain-text content. It's oldschool! //text: 'Mailgun rocks, pow pow!' }, function (err, info) { if (err) { res.json({ message: 'MAIL ERROR', desc: err }); } else { //console.log(info); res.json({ message: 'MAIL SENT', desc: info }); } } ); }) .catch(() => { //console.error(err); }); }) .catch(err => { res.json(err); }); }); module.exports = router;