Cambios en servicio mailer
This commit is contained in:
parent
552559adaa
commit
a4d8574321
|
@ -7,12 +7,10 @@ var template = require('../template.js');
|
||||||
// Escrito de cambios en méto de pago del cliente
|
// Escrito de cambios en méto de pago del cliente
|
||||||
router.post('/paymentUpdate', function(request, response) {
|
router.post('/paymentUpdate', function(request, response) {
|
||||||
database.pool.query('SELECT Cliente, `e-mail` AS email FROM Clientes WHERE Id_Cliente = ?', [request.body.user], function(error, rs) {
|
database.pool.query('SELECT Cliente, `e-mail` AS email FROM Clientes WHERE Id_Cliente = ?', [request.body.user], function(error, rs) {
|
||||||
|
|
||||||
// Datos del escrito
|
// Datos del escrito
|
||||||
var params = {
|
var params = {
|
||||||
clientName: rs[0].Cliente
|
clientName: rs[0].Cliente
|
||||||
};
|
};
|
||||||
|
|
||||||
// Obtener plantilla y enviar
|
// Obtener plantilla y enviar
|
||||||
template.getTemplate('paymentUpdate', 'es', params, function(tplResult) {
|
template.getTemplate('paymentUpdate', 'es', params, function(tplResult) {
|
||||||
if (mail.send({recipient: rs[0].email, subject: tplResult.subject, body: tplResult.body})) {
|
if (mail.send({recipient: rs[0].email, subject: tplResult.subject, body: tplResult.body})) {
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
var Settings = require('../Settings.js');
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
/**
|
|
||||||
* Imprimir cabecera
|
|
||||||
*/
|
|
||||||
printHeader: function() {
|
|
||||||
console.log('##########################################################');
|
|
||||||
console.log('## ' + Settings.name + ' ##');
|
|
||||||
console.log('##########################################################');
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var settings = require('./settings.js');
|
var settings = require('./settings.js');
|
||||||
var logger = require('./logger.js');
|
var logger = require('./logger.js');
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
|
@ -12,12 +13,14 @@ module.exports = {
|
||||||
*/
|
*/
|
||||||
load: function(templateName, langCode) {
|
load: function(templateName, langCode) {
|
||||||
// Comprobamos que exista una traducción para esta plantilla
|
// Comprobamos que exista una traducción para esta plantilla
|
||||||
if (fs.existsSync('./Application/Language/' + langCode + '.' + templateName + '.json')) {
|
var localeFile = path.join(__dirname, 'Language', `${langCode}.${templateName}.json`);
|
||||||
return require('./Language/' + langCode + '.' + templateName + '.json');
|
var defaultLocaleFile = path.join(__dirname, 'Language', `${settings.defaultLanguage}.${templateName}.json`);
|
||||||
} else if(fs.existsSync('./Application/Language/' + settings.defaultLanguage + '.' + templateName + '.json')){
|
if (fs.existsSync(localeFile)) {
|
||||||
return require('./Language/' + settings.defaultLanguage + '.' + templateName + '.json');
|
return require(localeFile);
|
||||||
|
} else if (fs.existsSync(defaultLocaleFile)) {
|
||||||
|
return require(defaultLocaleFile);
|
||||||
} else {
|
} else {
|
||||||
logger.print(__LOG_ERROR, 'No se ha encontrado ninguna traducción para la plantilla ' + templateName + '.');
|
throw new Error('No se ha encontrado ninguna traducción para la plantilla ' + templateName + '.');
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
|
@ -1,6 +1,7 @@
|
||||||
var nodemailer = require('nodemailer');
|
var nodemailer = require('nodemailer');
|
||||||
var settings = require('./settings.js');
|
var settings = require('./settings.js');
|
||||||
var logger = require('./logger.js');
|
var logger = require('./logger.js');
|
||||||
|
var path = require('path');
|
||||||
|
|
||||||
// Módulo para el envío de emails
|
// Módulo para el envío de emails
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -28,28 +29,29 @@ module.exports = {
|
||||||
* @param {Object} data - Datos para el envío del email
|
* @param {Object} data - Datos para el envío del email
|
||||||
*/
|
*/
|
||||||
send: function(data) {
|
send: function(data) {
|
||||||
|
var filePath = 'Template/images/';
|
||||||
let mailOptions = {
|
let mailOptions = {
|
||||||
from: '"' + settings.app().senderName + '" <' + settings.app().senderMail + '>',
|
from: '"' + settings.app().senderName + '" <' + settings.app().senderMail + '>',
|
||||||
to: data.recipient,
|
to: data.recipient,
|
||||||
subject: data.subject,
|
subject: data.subject,
|
||||||
html: data.body,
|
html: data.body,
|
||||||
attachments: [
|
attachments: [
|
||||||
{filename: 'header.png', path: './Application/Template/images/header.png', cid: 'header'},
|
{filename: 'header.png', path: path.join(__dirname, filePath, 'header.png'), cid: 'header'},
|
||||||
{filename: 'arrow.png', path: './Application/Template/images/arrow.png', cid: 'arrow'},
|
{filename: 'arrow.png', path: path.join(__dirname, filePath, 'arrow.png'), cid: 'arrow'},
|
||||||
{filename: 'chat.png', path: './Application/Template/images/chat.png', cid: 'chat'},
|
{filename: 'chat.png', path: path.join(__dirname, filePath, 'chat.png'), cid: 'chat'},
|
||||||
{filename: 'facebook.png', path: './Application/Template/images/facebook.png', cid: 'facebook'},
|
{filename: 'facebook.png', path: path.join(__dirname, filePath, 'facebook.png'), cid: 'facebook'},
|
||||||
{filename: 'twitter.png', path: './Application/Template/images/twitter.png', cid: 'twitter'},
|
{filename: 'twitter.png', path: path.join(__dirname, filePath, 'twitter.png'), cid: 'twitter'},
|
||||||
{filename: 'youtube.png', path: './Application/Template/images/youtube.png', cid: 'youtube'},
|
{filename: 'youtube.png', path: path.join(__dirname, filePath, 'youtube.png'), cid: 'youtube'},
|
||||||
{filename: 'pinterest.png', path: './Application/Template/images/pinterest.png', cid: 'pinterest'},
|
{filename: 'pinterest.png', path: path.join(__dirname, filePath, 'pinterest.png'), cid: 'pinterest'},
|
||||||
{filename: 'instagram.png', path: './Application/Template/images/instagram.png', cid: 'instagram'},
|
{filename: 'instagram.png', path: path.join(__dirname, filePath, 'instagram.png'), cid: 'instagram'},
|
||||||
{filename: 'linkedin.png', path: './Application/Template/images/linkedin.png', cid: 'linkedin'}
|
{filename: 'linkedin.png', path: path.join(__dirname, filePath, 'linkedin.png'), cid: 'linkedin'}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
this.transporter.sendMail(mailOptions, (error, info) => {
|
this.transporter.sendMail(mailOptions, (error, info) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.print(__LOG_ERROR, error);
|
logger.print(__LOG_ERROR, error);
|
||||||
} else if (settings.debug) {
|
} else if (settings.app().debug) {
|
||||||
logger.print(__LOG_INFO, 'Se ha enviado el email ' + info.messageId + ' [' + info.response + ']');
|
logger.print(__LOG_INFO, 'Se ha enviado el email ' + info.messageId + ' [' + info.response + ']');
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -4,7 +4,7 @@ var settings = require('./settings.js');
|
||||||
|
|
||||||
// Página por defecto
|
// Página por defecto
|
||||||
router.get('/', function(request, response) {
|
router.get('/', function(request, response) {
|
||||||
response.send(Settings.name + ' v' + settings.version);
|
response.send(settings.app().name + ' v' + settings.app().version);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Rutas de los escritos.
|
// Rutas de los escritos.
|
||||||
|
|
|
@ -3,6 +3,7 @@ module.exports = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuración de la aplicación
|
* Configuración de la aplicación
|
||||||
|
* @return {Object} Objeto de configuración app
|
||||||
*/
|
*/
|
||||||
app: function() {
|
app: function() {
|
||||||
return require('./Config/mailerApp.json');
|
return require('./Config/mailerApp.json');
|
||||||
|
@ -10,6 +11,7 @@ module.exports = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuración de smtp
|
* Configuración de smtp
|
||||||
|
* @return {Object} Objeto de configuración smtp
|
||||||
*/
|
*/
|
||||||
smtp: function() {
|
smtp: function() {
|
||||||
return require('./Config/mailerSmtp.json');
|
return require('./Config/mailerSmtp.json');
|
||||||
|
@ -17,6 +19,7 @@ module.exports = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuración de mysql
|
* Configuración de mysql
|
||||||
|
* @return {Object} Objeto de configuración MySQL
|
||||||
*/
|
*/
|
||||||
mysql: function() {
|
mysql: function() {
|
||||||
return require('./Config/mailerMysql.json');
|
return require('./Config/mailerMysql.json');
|
||||||
|
|
|
@ -1,43 +1,39 @@
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var mustache = require('mustache');
|
var mustache = require('mustache');
|
||||||
var database = require('./database.js');
|
var database = require('./database.js');
|
||||||
var logger = require('./logger.js');
|
|
||||||
var language = require('./language.js');
|
var language = require('./language.js');
|
||||||
|
var path = require('path');
|
||||||
var Template = {
|
var Template = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtiene la plantilla
|
* Obtiene la plantilla
|
||||||
* @param {String} templateName - Nombre de la plantilla
|
* @param {String} templateName - Nombre de la plantilla
|
||||||
|
* @param {Object} langCode - Código del idioma
|
||||||
* @param {Object} params - Datos a reemplazar.
|
* @param {Object} params - Datos a reemplazar.
|
||||||
* @param {Object} callback - Callback
|
* @param {Object} callback - Callback
|
||||||
*/
|
*/
|
||||||
getTemplate: function(templateName, langCode, params, callback) {
|
getTemplate: function(templateName, langCode, params, callback) {
|
||||||
database.pool.query('SELECT name, attachmentPath FROM vn.mailTemplates WHERE name = ?', [templateName], function(error, rs)
|
database.pool.query('SELECT name, attachmentPath FROM vn.mailTemplates WHERE name = ?', [templateName], function(error, rs) {
|
||||||
{
|
|
||||||
// Comprobamos que exista la plantilla
|
// Comprobamos que exista la plantilla
|
||||||
if (rs.length == 0) {
|
if (rs.length == 0)
|
||||||
logger.print(__LOG_ERROR, 'La plantilla ' + templateName + ' no existe');
|
throw new Error('La plantilla ' + templateName + ' no existe');
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var langParams = language.load(templateName, langCode);
|
var langParams = language.load(templateName, langCode);
|
||||||
params = Object.assign({}, langParams, params);
|
params = Object.assign({}, langParams, params);
|
||||||
var path = './Application/Template/' + rs[0].name + '.html';
|
var templatePath = path.join(__dirname, 'Template', `${rs[0].name}.html`);
|
||||||
|
|
||||||
if (!fs.existsSync(path)) {
|
if (!fs.existsSync(templatePath))
|
||||||
logger.print(__LOG_ERROR, 'No se ha podido cargar la plantilla ' + name + '.html');
|
throw new Error('No se ha podido cargar la plantilla ' + templateName + '.html');
|
||||||
} else {
|
|
||||||
Template.render(path, params, function(tplBody) {
|
Template.render(templatePath, params, function(tplBody) {
|
||||||
callback({subject: params.subject, body: tplBody});
|
callback({subject: params.subject, body: tplBody});
|
||||||
});
|
});
|
||||||
}
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renderiza las plantillas
|
* Renderiza las plantillas
|
||||||
* @param {String} path - Ruta de la plantilla
|
* @param {String} path - Ruta de la plantilla
|
||||||
* @param {String} language - Idioma
|
|
||||||
* @param {Object} params - Listado de parámetros a remplazar
|
* @param {Object} params - Listado de parámetros a remplazar
|
||||||
* @param {Object} callback - Callback
|
* @param {Object} callback - Callback
|
||||||
*/
|
*/
|
||||||
|
@ -46,7 +42,7 @@ var Template = {
|
||||||
mustache.parse(body);
|
mustache.parse(body);
|
||||||
callback(mustache.render(body, params));
|
callback(mustache.render(body, params));
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = Template;
|
module.exports = Template;
|
||||||
|
|
|
@ -2,14 +2,13 @@
|
||||||
* Módulos necesarios
|
* Módulos necesarios
|
||||||
*/
|
*/
|
||||||
var express = require('express');
|
var express = require('express');
|
||||||
var app = express();
|
var app = module.exports = express();
|
||||||
var bodyParser = require('body-parser');
|
var bodyParser = require('body-parser');
|
||||||
|
|
||||||
var settings = require('./Application/settings.js');
|
var settings = require('./Application/settings.js');
|
||||||
var mail = require('./Application/mail.js');
|
var mail = require('./Application/mail.js');
|
||||||
var logger = require('./Application/logger.js');
|
var logger = require('./Application/logger.js');
|
||||||
var database = require('./Application/database.js');
|
var database = require('./Application/database.js');
|
||||||
var terminal = require('./Application/Util/terminal.js');
|
|
||||||
|
|
||||||
// Middleware
|
// Middleware
|
||||||
app.use(bodyParser.json());
|
app.use(bodyParser.json());
|
||||||
|
@ -19,20 +18,19 @@ app.use(bodyParser.urlencoded({extended: true}));
|
||||||
app.use('/', require('./Application/router.js'));
|
app.use('/', require('./Application/router.js'));
|
||||||
|
|
||||||
// Iniciar escucha del servidor
|
// Iniciar escucha del servidor
|
||||||
app.listen(settings.app().port, function() {
|
app.start = function() {
|
||||||
// Imprimir cabecera
|
return app.listen(settings.app().port, function() {
|
||||||
terminal.printHeader();
|
|
||||||
|
|
||||||
// Escucha SMTP
|
|
||||||
mail.init();
|
mail.init();
|
||||||
|
|
||||||
// Iniciar base de datos
|
|
||||||
database.init();
|
database.init();
|
||||||
|
|
||||||
logger.print(__LOG_INFO, 'Servidor de correo iniciado en el puerto ' + settings.app().port);
|
logger.print(__LOG_INFO, 'Servidor de correo iniciado en el puerto ' + settings.app().port);
|
||||||
|
if (settings.app().debug) {
|
||||||
if (settings.debug) {
|
|
||||||
logger.print(__LOG_WARNING, 'El modo debug está activado');
|
logger.print(__LOG_WARNING, 'El modo debug está activado');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
if (require.main === module) {
|
||||||
|
app.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue