mirror of
https://github.com/JuniorDark/RustyHearts-API.git
synced 2026-05-07 14:11:44 -04:00
Add project files.
This commit is contained in:
commit
0a12c6baa0
41 changed files with 2698 additions and 0 deletions
114
src/mailer/mailer.js
Normal file
114
src/mailer/mailer.js
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
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};
|
||||
Loading…
Add table
Add a link
Reference in a new issue