diff --git a/v1/src/apps/public/account/services.js b/v1/src/apps/public/account/services.js index d976c4f..8518f06 100644 --- a/v1/src/apps/public/account/services.js +++ b/v1/src/apps/public/account/services.js @@ -223,7 +223,7 @@ const RecoverPwd = async(req, res) => { otp }; const checksum = toSha256( JSON.stringify(checksum_entry)).substr(0, 32); - await emailEvent( EMAIL_EVENTS.ACCOUNT_VERIFY , receiver , content ); + await emailEvent( EMAIL_EVENTS.ACCOUNT_PWD_RESET , receiver , content ); console.log( content ); diff --git a/v1/src/lib/Handlers/MailClient/SendGrid.handler.js b/v1/src/lib/Handlers/MailClient/SendGrid.handler.js index 257e012..7bd693e 100644 --- a/v1/src/lib/Handlers/MailClient/SendGrid.handler.js +++ b/v1/src/lib/Handlers/MailClient/SendGrid.handler.js @@ -73,13 +73,12 @@ async function AccountPwdResetEmail( receiver, content ){ async function ContactEmail( receiver, content ){ const templateId = "d-1090dda1091442f3a75ee8ab39ad0f10"; const subject = "[ETA] Contact Email"; - const content_to_send = { + const content_to_send = { project_name: SiteName, user_name: content.name, user_email: receiver }; return await sendMailTemplate( templateId, receiver, subject, content_to_send ); } -//ContactEmail( "josepablo134@gmail.com", { email : "josepablo134@gmail.com", name:"Josepablo C.", message: "This is an example" } ).then().catch(); module.exports = { AccountVerifyEmail, AccountConfirmed, AccountPwdResetEmail, ContactEmail }; diff --git a/v1/src/lib/Handlers/MailClient/StandAlone.handler.js b/v1/src/lib/Handlers/MailClient/StandAlone.handler.js index 7bcd353..8e10e6c 100644 --- a/v1/src/lib/Handlers/MailClient/StandAlone.handler.js +++ b/v1/src/lib/Handlers/MailClient/StandAlone.handler.js @@ -1,15 +1,54 @@ 'user strict'; -const { ROOT_PATH, API_CONFIG } = process.env; const nodemailer = require("nodemailer"); +const apiConfig = require( '../../../config/apiConfig.json' ); -const apiConfig = require( `${ROOT_PATH}/${API_CONFIG}` ); +/** + * Load HTML templates + */ +const accountVerifiedTemplate = require('./StandAlone/templates/accountVerifiedTemplate'); +const accountVerifyTemplate = require('./StandAlone/templates/accountVerifyTemplate'); +const contactResponseTemplate = require('./StandAlone/templates/contactResponseTemplate'); +const recoveryPasswordTemplate = require('./StandAlone/templates/recoveryPasswordTemplate'); +const warehouseNotificationTemplate = require('./StandAlone/templates/warehouseNotificationTemplate'); const transporter = nodemailer.createTransport( apiConfig.email_standalone ); +const default_from = apiConfig.email_standalone.auth.user; + +function redirect_email( receiver ){ + /**TODO: Remove in production */ + const default_mail_list = [ + {pattern:"alex@etaviaporte.com",redirect:"alexandro.uc@etaviaporte.com"}, + {pattern:"testing@etaviaporte.com",redirect:"josepablo134@gmail.com"}, + {pattern:"pablo@etaviaporte.com",redirect:"josepablo134@gmail.com"} + ]; + for( let i=0; i< default_mail_list.length; i++ ){ + if( receiver.indexOf( default_mail_list[i].pattern ) >= 0 ){ + receiver = default_mail_list[i].redirect; + break;/** Set only the first match */ + } + } + return receiver +} + +async function sendMailTemplate( receiver, subject, html ){ + /**TODO: Remove in production */ + receiver = redirect_email( receiver ); + return await transporter.sendMail({ + from: `ETA Viaporte <${default_from}>`, + to: receiver, + subject, + html, + attachments:[{ + filename: 'eta_logo.png', + path: './StandAlone/assets/eta_logo.png', + cid: 'eta_logo' + }] + }); +} async function StandAloneContactEmail( content ){ - const default_from = apiConfig.email_standalone.auth.user; const receiver = "support@etaviaporte.com"; const {name, email, message } = content; return await transporter.sendMail({ @@ -19,6 +58,33 @@ async function StandAloneContactEmail( content ){ text: `\n\n The following is an email from : ${email}\n\n\n` + message }); } -//StandAloneContactEmail( { email : "josepablo134@gmail.com", name:"Josepablo C.", message: "This is an example" } ).then().catch(); -module.exports = { StandAloneContactEmail }; +async function AccountVerifyEmail( receiver, content ){ + const subject = "[ETA] Account Verification"; + const { user_name , OTP } = content; + const html = accountVerifyTemplate( user_name, OTP ); + return await sendMailTemplate( receiver, subject, html ); +} + +async function AccountConfirmed( receiver, content){ + const subject = "[ETA] Welcome to ETA"; + const { user_name } = content; + const html = accountVerifiedTemplate( user_name ); + return await sendMailTemplate( receiver, subject, html ); +} + +async function AccountPwdResetEmail( receiver, content ){ + const subject = "[ETA] Password Reset"; + const { user_name , OTP } = content; + const html = recoveryPasswordTemplate( user_name, OTP ); + return await sendMailTemplate( receiver, subject, html ); +} + +async function ContactEmail( receiver, content ){ + const subject = "[ETA] Contact Email"; + const { user_name } = content; + const html = contactResponseTemplate( user_name ); + return await sendMailTemplate( receiver, subject, html ); +} + +module.exports = { AccountVerifyEmail, AccountConfirmed, AccountPwdResetEmail, ContactEmail, StandAloneContactEmail }; diff --git a/v1/src/lib/Handlers/MailClient/StandAlone/assets/eta_logo.png b/v1/src/lib/Handlers/MailClient/StandAlone/assets/eta_logo.png new file mode 100644 index 0000000..22c1fbd Binary files /dev/null and b/v1/src/lib/Handlers/MailClient/StandAlone/assets/eta_logo.png differ diff --git a/v1/src/lib/Handlers/MailClient/StandAlone/templates/accountVerifiedTemplate.js b/v1/src/lib/Handlers/MailClient/StandAlone/templates/accountVerifiedTemplate.js new file mode 100644 index 0000000..9c802eb --- /dev/null +++ b/v1/src/lib/Handlers/MailClient/StandAlone/templates/accountVerifiedTemplate.js @@ -0,0 +1,64 @@ +'user strict'; + +module.exports = (name) => { + return ` +
+ Su cuenta se registro exitosamente, estas a solo unos pasos para completar tu perfil, da click en el siguiente botón y continua con el proceso. +
+ + Panel Eta Viaporte + +
+ Saludos cordiales,
+ Equipo de cuentas - ETA Viaporte
+
+ Verifica tu dirección de correo electrónico para completar tu registro en ETA Viaporte. +
++ ${otp} +
++ Este código es válido por 1 hora y solo se puede usar una vez. +
++ Hemos recibido una solicitud para crear una cuenta en ETA Viaporte utilizando tu correo electrónico. + Si no hiciste esta solicitud, puedes ignorar este mensaje. +
+
+ Saludos cordiales,
+ Equipo de cuentas - ETA Viaporte
+
¡Gracias por contactarnos!
+Recibimos tu consulta y puede llevar algún tiempo responderla. Mientras tanto, puedes consultar nuestras preguntas frecuentes en: FAQS Eta Viaporte
+Nuestro horario de atención es lunes a viernes de 09:00 a 18:00 (GMT-7)
+¡Agradecemos tu paciencia y comprensión!
+ +
+ Saludos cordiales,
+ Equipo de cuentas - ETA Viaporte
+
+ Hemos recibido una solicitud para restablecer su contraseña de ETA Viaporte utilizando tu correo electrónico. + Si no hiciste esta solicitud, puedes ignorar este mensaje. +
++ ${otp} +
++ Este código es válido por 1 hora y solo se puede usar una vez. +
+
+ Saludos cordiales,
+ Equipo de cuentas - ETA Viaporte
+
+ Se ha asignado nueva carga con código ${code} a la bodega +
++ Este correo ha sido generado automáticamente. No es necesario responder, ya que no se monitorean las respuestas a este mensaje. +
++ Equipo ETA Viaporte +
+