import nodemailer from "nodemailer"; //import juice from "juice"; // // Create reusable transporter object // export const mailer = nodemailer.createTransport({ host: "mail.metatron-admin-backend.metatronhost.com", // your Hestia mail host port: 587, // STARTTLS secure: false, // must be false for 587 auth: { user: "info@metatron-admin-backend.metatronhost.com", // e.g. info@metatron-admin-backend.metatronhost.com pass: "MetatronBackendAdmin@2025", // mailbox password }, name: "mail.metatron-admin-backend.metatronhost.com", // explicitly set hostname tls: { rejectUnauthorized: false, // allow self-signed certs }, logger: true, // optional: logs connection steps debug: true, // optional: debug SMTP connection }); // // Send welcome / signup email // export async function sendSignupMail(toEmail) { try { await mailer.sendMail({ from: `"CrawlerX" info@metatron-admin-backend.metatronhost.com`, to: toEmail, subject: "Welcome to CrawlerX", html: `
Your signup was successful. You can now log in and start using the app.
`, }); console.log(`✅ Signup email sent to ${toEmail}`); } catch (err) { console.error("❌ Error sending signup email:", err); } } // // Send reset-password email with 4-digit code or token link // export async function sendResetPasswordMail(email, token) { try { const resetURL = `${process.env.FRONTEND_URL}/reset-password?email=${email}&token=${token}`; await mailer.sendMail({ from: `"CrawlerX" <${process.env.SMTP_USER}>`, to: email, subject: "Reset your password", html: `You requested a password reset.
Click here to reset: ${resetURL}
This link is valid for 1 hour.
`, }); console.log(`✅ Reset password email sent to ${email}`); } catch (err) { console.error("❌ Error sending reset password email:", err); } } export const sendCakeOrderMail = async (email, order, totalPieces, totalPrice) => { try { const transporter = nodemailer.createTransport({ host: "mail.metatron-admin-backend.metatronhost.com", port: 587, secure: false, auth: { user: "info@metatron-admin-backend.metatronhost.com", pass: "MetatronBackendAdmin@2025", }, tls: { rejectUnauthorized: false }, }); // Build table rows let orderRows = ""; Object.entries(order).forEach(([category, items]) => { items.forEach(({ flavour, pieces, unitPrice, totalPrice: lineTotal }) => { orderRows += `