76 lines
2.2 KiB
JavaScript
76 lines
2.2 KiB
JavaScript
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);
|
|
},
|
|
|
|
sendEmail: 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 =
|
|
'<p>Hello. User left you a message on Saburly service using Alexa skill.</p><br/><b>Message : </b><br/><p>' +
|
|
message +
|
|
'</p><br/><b>Name : </b>' +
|
|
name +
|
|
'<br/><b>Email : </b>' +
|
|
fromEmail +
|
|
'<br/><br/><b>Your Saburly team</b>';
|
|
|
|
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);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
};
|