const nodemailer = require('nodemailer');
const { SESv2Client, SendEmailCommand } = require('@aws-sdk/client-sesv2');
const sesClient = new SESv2Client({
region: process.env.AWS_REGION,
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
},
});
// Create the transporter
const transporter = nodemailer.createTransport({
SES: { sesClient, SendEmailCommand },
});
// Helper function to get color based on time of day
// hour parameter should be the local hour (0-23) from the client
function getColorForTime(hour) {
if (hour >= 5 && hour < 10) {
// Morning - orange
return '#FF9800';
} else if (hour >= 10 && hour < 18) {
// Afternoon - blue
return '#2196F3';
} else {
// Evening/Night - purple
return '#471189';
}
}
// Helper function to send email
async function sendVerificationEmail(toEmail, token, name, localHour = new Date().getHours()) {
const primaryColor = getColorForTime(localHour);
const verificationLink = `https://wahwa.com/verify-email?token=${token}`;
try {
const info = await transporter.sendMail({
from: `"BlindMaster" <${process.env.EMAIL_FROM}>`, // Sender address
to: toEmail,
subject: "Verify your BlindMaster account",
html: `
BlindMaster
Smart Home Automation
|
Welcome${name && name.trim() ? `, ${name.trim()}` : ''}!
Thank you for joining BlindMaster! To electrify your blinds, please verify your email address 🥹
|
|
Verify Email Address
|
|
|
|
This verification link will expire in 24 hours.
If you didn't create a BlindMaster account, please ignore this email!!!
|
|
© 2026 BlindMaster. All rights reserved.
|
|
`,
});
console.log("Email sent successfully:", info.messageId);
return true;
} catch (error) {
console.error("Error sending email:", error);
return false;
}
}
// Helper function to send password reset email
async function sendPasswordResetEmail(toEmail, code, name, localHour = new Date().getHours()) {
const primaryColor = getColorForTime(localHour);
try {
const info = await transporter.sendMail({
from: `"BlindMaster" <${process.env.EMAIL_FROM}>`,
to: toEmail,
subject: "Reset your BlindMaster password",
html: `
BlindMaster
Smart Home Automation
|
Password Reset Request
${name && name.trim() ? `Hi ${name.trim()}, we` : 'We'} received a request to reset your password. Use the code below to continue:
|
|
|
|
|
|
This code will expire in 15 minutes.
If you didn't request a password reset, please ignore this email.
|
|
© 2026 BlindMaster. All rights reserved.
|
|
`,
});
console.log("Password reset email sent successfully:", info.messageId);
return true;
} catch (error) {
console.error("Error sending password reset email:", error);
return false;
}
}
module.exports = { sendVerificationEmail, sendPasswordResetEmail };