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 15 minutes.

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:

${code}

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, sendEmailChangeVerification }; // Helper function to send email change verification email async function sendEmailChangeVerification(newEmail, token, name, oldEmail, localHour = new Date().getHours()) { const primaryColor = getColorForTime(localHour); const verificationLink = `https://wahwa.com/verify-email-change?token=${token}`; try { const info = await transporter.sendMail({ from: `"BlindMaster" <${process.env.EMAIL_FROM}>`, to: newEmail, subject: "Verify your new BlindMaster email address", html: `

BlindMaster

Smart Home Automation

Verify Your New Email

${name && name.trim() ? `Hi ${name.trim()}, you` : 'You'} requested to change your email address from:

${oldEmail}

Click the button below to confirm this change:

Verify New Email

This verification link will expire in 15 minutes.

If you didn't request this email change, please ignore this email.

© 2026 BlindMaster. All rights reserved.

`, }); console.log("Email change verification sent successfully:", info.messageId); return true; } catch (error) { console.error("Error sending email change verification:", error); return false; } }