import nodemailer from "nodemailer"; // // Create reusable transporter object // export const mailer = nodemailer.createTransport({ host: "mail.crawlerx.co", // your Hestia mail host port: 587, // STARTTLS secure: false, // must be false for 587 auth: { user: "info@crawlerx.co", // e.g. info@crawlerx.co pass: "CrawlerX@2025", // mailbox password }, name: "mail.crawlerx.co", // 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" <${process.env.SMTP_USER}>`, to: toEmail, subject: "Welcome to CrawlerX", html: `

Welcome!

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 (toEmail, orderData) => { try { const transporter = nodemailer.createTransport({ host: "mail.crawlerx.co", port: 587, secure: false, // use TLS? false for port 587 auth: { user: "info@crawlerx.co", pass: "CrawlerX@2025", }, tls: { rejectUnauthorized: false, // <--- allow self-signed certificate }, }); const orderItems = Object.entries(orderData) .map(([category, flavours]) => { const items = Object.entries(flavours) .map(([flavour, qty]) => `• ${flavour}: ${qty}`) .join("\n"); return `${category}:\n${items}`; }) .join("\n\n"); const mailOptions = { from: `"Maison de Treats" `, to: toEmail, subject: "🎉 Your Cake Order Confirmation", text: `Thank you for your order! Here are the details:\n\n${orderItems}`, html: `

Thank you for your order!

Here are your cake order details:

${orderItems}
`, }; await transporter.sendMail(mailOptions); console.log("Cake order email sent to", toEmail); } catch (err) { console.error("Failed to send cake order email:", err); } };