import express from "express"; import nodemailer from "nodemailer"; const router = express.Router(); const buildTransporterConfig = () => { const host = process.env.SMTP_HOST; const port = Number(process.env.SMTP_PORT || 587); const secure = typeof process.env.SMTP_SECURE === "string" ? process.env.SMTP_SECURE === "true" : port === 465; const user = process.env.SMTP_USER; const pass = process.env.SMTP_PASS; const baseConfig = { host, port, secure, }; if (user && pass) { baseConfig.auth = { user, pass }; } return baseConfig; }; router.post("/contact", async (req, res) => { const { name, email, subject, message, consent } = req.body || {}; console.info("📨 Requête contact reçue", { name, email, subject, consent, }); if (!name || !email || !subject || !message) { return res.status(400).json({ message: "Merci de compléter tous les champs requis avant d'envoyer votre message.", }); } const recipient = process.env.CONTACT_RECIPIENT || "sebastien@octopusdesign.fr"; const fromAddress = process.env.CONTACT_FROM || process.env.SMTP_FROM || process.env.SMTP_USER || "no-reply@octopusdesign.fr"; try { const transporter = nodemailer.createTransport(buildTransporterConfig()); const mailSubject = subject.trim() ? `[Site Octopus Design] ${subject.trim()}` : "Nouveau message depuis le site Octopus Design"; const consentLabel = consent ? "✅ Consentement donné" : "❌ Consentement non fourni"; const textBody = ` Nom : ${name} E-mail : ${email} Consentement : ${consentLabel} Message : ${message} `; const htmlBody = `
Nom : ${name}
E-mail : ${email}
Consentement : ${consentLabel}
Message :
${message.replace(/\n/g, "
")}