diff --git a/.env.example b/.env.example index 264dbd5..8b49a4c 100644 --- a/.env.example +++ b/.env.example @@ -3,4 +3,6 @@ HOSTDB = '' USERDB = '' PASSDB = '' DB = '' +CORREO = +PASSEMAIL = diff --git a/package-lock.json b/package-lock.json index 1bf4191..99af825 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,11 @@ "negotiator": "0.6.2" } }, + "addressparser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", + "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=" + }, "adler-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", @@ -97,6 +102,36 @@ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" }, + "buildmail": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-3.10.0.tgz", + "integrity": "sha1-xoJtcW55RbtvaxQ0tTmF4CmgMVk=", + "requires": { + "addressparser": "1.0.1", + "libbase64": "0.1.0", + "libmime": "2.1.0", + "libqp": "1.1.0", + "nodemailer-fetch": "1.6.0", + "nodemailer-shared": "1.1.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + }, + "libmime": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz", + "integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=", + "requires": { + "iconv-lite": "0.4.13", + "libbase64": "0.1.0", + "libqp": "1.1.0" + } + } + } + }, "busboy": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", @@ -239,6 +274,14 @@ "streamsearch": "0.1.2" } }, + "dkim-signer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dkim-signer/-/dkim-signer-0.2.2.tgz", + "integrity": "sha1-qoHsBx7u02IngbqpIgRNeADl8wg=", + "requires": { + "libmime": "^2.0.3" + } + }, "dotenv": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", @@ -468,6 +511,33 @@ } } }, + "libbase64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", + "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=" + }, + "libmime": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.3.tgz", + "integrity": "sha1-JQF8pataHpiq2+JyUBfPHUikKgw=", + "requires": { + "iconv-lite": "0.4.15", + "libbase64": "0.1.0", + "libqp": "1.1.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=" + } + } + }, + "libqp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", + "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=" + }, "lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", @@ -481,6 +551,32 @@ "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" }, + "mailcomposer": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-3.12.0.tgz", + "integrity": "sha1-nF4RiKqOHGLsi4a9Q0aBArY56Pk=", + "requires": { + "buildmail": "3.10.0", + "libmime": "2.1.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=" + }, + "libmime": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/libmime/-/libmime-2.1.0.tgz", + "integrity": "sha1-Ubx23iKDFh65BRxLyArtcT5P0c0=", + "requires": { + "iconv-lite": "0.4.13", + "libbase64": "0.1.0", + "libqp": "1.1.0" + } + } + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -565,6 +661,24 @@ "xlsx": "^0.14.1" } }, + "nodemailer": { + "version": "6.4.13", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.13.tgz", + "integrity": "sha512-XmtiiKza2Cqtr+ZRMchMZn9s2nmwQDeakbf+yL0ODsIXOv58UZgk/MKPOkDKqY+mvxHs87PrJK7Nf/tcpKHqYQ==" + }, + "nodemailer-fetch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", + "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=" + }, + "nodemailer-shared": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", + "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", + "requires": { + "nodemailer-fetch": "1.6.0" + } + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -716,6 +830,15 @@ } } }, + "sendmail": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sendmail/-/sendmail-1.6.1.tgz", + "integrity": "sha512-lIhvnjSi5e5jL8wA1GPP6j2QVlx6JOEfmdn0QIfmuJdmXYGmJ375kcOU0NSm/34J+nypm4sa1AXrYE5w3uNIIA==", + "requires": { + "dkim-signer": "0.2.2", + "mailcomposer": "3.12.0" + } + }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", diff --git a/package.json b/package.json index a4e7643..fe9ecba 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,9 @@ "express": "^4.17.1", "mysql": "^2.18.1", "node-xlsx": "^0.15.0", - "read-excel-file": "^4.0.7" + "nodemailer": "^6.4.13", + "read-excel-file": "^4.0.7", + "sendmail": "^1.6.1" }, "devDependencies": {} } diff --git a/routes/email.js b/routes/email.js new file mode 100644 index 0000000..890d63c --- /dev/null +++ b/routes/email.js @@ -0,0 +1,55 @@ + +const express = require('express') +var app = express(); + +var fs = require('fs'); +var path = require('path'); +const nodemailer = require("nodemailer"); + +app.post('/email', function(request, response){ + +let {nombre} = request.body +let {correo} = request.body +let {mensaje} = request.body + +try{ + let mailTransporter = nodemailer.createTransport({ + service: 'gmail', + port: 587, + secure: false, // true for 465, false for other ports + auth: { + user: 'editoriales@acatlan.unam.mx', + pass: '3d1t0r14l35@2019' + } + }); + + let mailDetails = { + from: `${nombre} from ${correo} <${correo}>` , + to: 'editoriales@acatlan.unam.mx', + subject: 'Portal Contacto', + text: ` + Usuario: ${nombre} + Correo electrónico: ${correo} + + ${mensaje} + ` + }; + + mailTransporter.sendMail(mailDetails, function(err, data) { + if(err) { + console.log('Error Occurs',err.message); + response.status(400).json({error: true, msj: 'No se pudo enviar el correo'}); + } else { + console.log('Email sent successfully'); + response.status(200).json({error:false, msj: 'Correo enviado exitosamente'}) + } + }) +} + catch{ + console.log(`error al mandar correo`); + response.status(400).json({error: true, msj: 'No se pudo enviar el correo'}); + return; + } + }); + +module.exports = app; diff --git a/routes/index.js b/routes/index.js index e481fef..7e3ff11 100644 --- a/routes/index.js +++ b/routes/index.js @@ -11,5 +11,6 @@ app.use(require('./getImagenCarrusel')); app.use(require('./getLibros')); app.use(require('./temaLibro')); app.use(require('./getPDF')); +app.use(require('./email')); module.exports = app; \ No newline at end of file