const nodemailer = require ('nodemailer'); const emailConfig = require('../config/email'); module.exports = { transformEmailFromAlexaResponse: function (email) { //email from alexa response will contain words instead of symbols, like : //at = @ //underscore = _ //dash = - //dot = . //TODO: This list should be longer let transformedEmail = email .replace (/\s/g, '') //remove all spaces .replace (/at/gi, '@') .replace (/underscore/gi, '_') .replace (/dash/gi, '-') .replace (/dot/gi, '.'); return transformedEmail; }, isEmailValid: function (email) { console.log ('Email to validate : ' + email); let validEmailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return validEmailRegex.test (email); }, sendEmal: function (name, fromEmail, message, toEmail) { return new Promise ((resolve, reject) => { fromEmail = this.transformEmailFromAlexaResponse(fromEmail); let messageBody = 'Hello. User left you a message on Saburly service using Alexa skill. \r\nMessage : ' + message + '\r\nName : ' + name + '\r\nEmail : ' + fromEmail + '\r\nYour Saburly team'; let messageBodyHTML = '

Hello. User left you a message on Saburly service using Alexa skill.


Message :

' + message + '


Name : ' + name + '
Email : ' + fromEmail + '

Your Saburly team'; let transporter = nodemailer.createTransport ({ host: emailConfig.SMTP_HOST, port: emailConfig.PORT, secure: emailConfig.SECURE, auth: emailConfig.AUTH, }); var mailOptions = { from: emailConfig.FROM_EMAIL, replyTo: fromEmail, to: toEmail, subject: emailConfig.SUBJECT, text: messageBody, html: messageBodyHTML, }; transporter.sendMail (mailOptions, (error, info) => { if (error) { reject (error); } else { resolve (info); } }); }); }, };