mirror of
https://github.com/JuniorDark/RustyHearts-API.git
synced 2026-05-07 14:11:44 -04:00
114 lines
No EOL
3.9 KiB
JavaScript
114 lines
No EOL
3.9 KiB
JavaScript
const nodemailer = require('nodemailer');
|
|
const handlebars = require('handlebars');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const { mailerLogger } = require('../utils/logger');
|
|
|
|
// Load the email templates
|
|
const emailTemplates = {
|
|
confirmation: fs.readFileSync(path.join(__dirname, 'templates', 'confirmationTemplate.hbs'), 'utf-8'),
|
|
verification: fs.readFileSync(path.join(__dirname, 'templates', 'verificationTemplate.hbs'), 'utf-8'),
|
|
passwordReset: fs.readFileSync(path.join(__dirname, 'templates', 'passwordResetTemplate.hbs'), 'utf-8'),
|
|
passwordChanged: fs.readFileSync(path.join(__dirname, 'templates', 'passwordChangedTemplate.hbs'), 'utf-8')
|
|
};
|
|
|
|
// Compile the email templates
|
|
const compiledTemplates = {
|
|
confirmation: handlebars.compile(emailTemplates.confirmation),
|
|
verification: handlebars.compile(emailTemplates.verification),
|
|
passwordReset: handlebars.compile(emailTemplates.passwordReset),
|
|
passwordChanged: handlebars.compile(emailTemplates.passwordChanged)
|
|
};
|
|
|
|
// SMTP transport configuration
|
|
const transporter = nodemailer.createTransport({
|
|
host: process.env.SMTP_HOST,
|
|
port: process.env.SMTP_PORT,
|
|
secure: process.env.SMTP_ENCRYPTION === 'ssl' || process.env.SMTP_ENCRYPTION === 'tls',
|
|
auth: {
|
|
user: process.env.SMTP_USERNAME,
|
|
pass: process.env.SMTP_PASSWORD
|
|
}
|
|
});
|
|
|
|
function sendConfirmationEmail(email, windyCode) {
|
|
const template = compiledTemplates.confirmation;
|
|
const emailContent = template({ windyCode });
|
|
|
|
const mailOptions = {
|
|
from: `"${process.env.SMTP_FROMNAME}" <${process.env.SMTP_USERNAME}>`,
|
|
to: email,
|
|
subject: '[Rusty Hearts] Account Creation Confirmation',
|
|
html: emailContent
|
|
};
|
|
|
|
transporter.sendMail(mailOptions, (error, info) => {
|
|
if (error) {
|
|
mailerLogger.error('[Mailer] Error sending confirmation email: ' + error.message);
|
|
} else {
|
|
mailerLogger.info('[Mailer] Confirmation email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendVerificationEmail(email, verificationCode) {
|
|
const template = compiledTemplates.verification;
|
|
const emailContent = template({ verificationCode });
|
|
|
|
const mailOptions = {
|
|
from: `"${process.env.SMTP_FROMNAME}" <${process.env.SMTP_USERNAME}>`,
|
|
to: email,
|
|
subject: '[Rusty Hearts] Account Creation',
|
|
html: emailContent
|
|
};
|
|
|
|
transporter.sendMail(mailOptions, (error, info) => {
|
|
if (error) {
|
|
mailerLogger.error('[Mailer] Error sending verification email: ' + error.message);
|
|
} else {
|
|
mailerLogger.info('[Mailer] Verification email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendPasswordResetEmail(email, verificationCode) {
|
|
const template = compiledTemplates.passwordReset;
|
|
const emailContent = template({ verificationCode });
|
|
|
|
const mailOptions = {
|
|
from: `"${process.env.SMTP_FROMNAME}" <${process.env.SMTP_USERNAME}>`,
|
|
to: email,
|
|
subject: '[Rusty Hearts] Password Reset Request',
|
|
html: emailContent
|
|
};
|
|
|
|
transporter.sendMail(mailOptions, (error, info) => {
|
|
if (error) {
|
|
mailerLogger.error('[Mailer] Error sending password reset email: ' + error.message);
|
|
} else {
|
|
mailerLogger.info('[Mailer] Password reset email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
|
|
function sendPasswordChangedEmail(email, windyCode) {
|
|
const template = compiledTemplates.passwordChanged;
|
|
const emailContent = template({ windyCode });
|
|
|
|
const mailOptions = {
|
|
from: `"${process.env.SMTP_FROMNAME}" <${process.env.SMTP_USERNAME}>`,
|
|
to: email,
|
|
subject: '[Rusty Hearts] Account Password Changed',
|
|
html: emailContent
|
|
};
|
|
|
|
transporter.sendMail(mailOptions, (error, info) => {
|
|
if (error) {
|
|
mailerLogger.error('[Mailer] Error sending password changed email: ' + error.message);
|
|
} else {
|
|
mailerLogger.info('[Mailer] Password changed email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = {sendConfirmationEmail, sendVerificationEmail, sendPasswordResetEmail, sendPasswordChangedEmail}; |