const nodemailer = require('nodemailer'); const fs = require('fs'); /* ========================= SMTP Transport ========================= */ const transporter = nodemailer.createTransport({ host: process.env.MAIL_HOST, // smtp.ionos.de port: Number(process.env.MAIL_PORT), // 587 secure: false, // ❗ MUSS false sein bei 587 requireTLS: true, // ✅ IONOS braucht das auth: { user: process.env.MAIL_USER, pass: process.env.MAIL_PASS }, tls: { rejectUnauthorized: false // ✅ verhindert TLS-Abbruch } }); console.log('MAIL_HOST:', process.env.MAIL_HOST); console.log('MAIL_PORT:', process.env.MAIL_PORT); /* ========================= Mail senden ========================= */ module.exports = async function sendContractMail(data) { try { if (!data || !data.email) { console.warn('⚠️ Vertragsmail nicht gesendet – keine E-Mail-Adresse'); return false; } if (!data.vertragsnummer) { console.warn('⚠️ Vertragsmail nicht gesendet – keine Vertragsnummer'); return false; } const pdfPath = data.pdfPath || null; const hasPdf = pdfPath && fs.existsSync(pdfPath); const datum = data.datum ? new Date(data.datum).toLocaleDateString('de-DE') : new Date().toLocaleDateString('de-DE'); const vertragName = data.vertragName || 'Mitgliedsvertrag'; const betragText = typeof data.betrag === 'number' ? `${data.betrag.toFixed(2)} € / Monat` : '—'; await transporter.sendMail({ from: `"Plusfit Verträge" <${process.env.MAIL_USER}>`, to: data.email, subject: 'Dein Mitgliedsvertrag bei Plusfit', text: ` Hallo ${data.vorname || ''}, vielen Dank für deine Anmeldung bei Plusfit. Dein Vertrag wurde am ${datum} online abgeschlossen. Gemäß § 126a BGB ist keine handschriftliche Unterschrift erforderlich. ---------------------------------- Vertragsdetails ---------------------------------- Vertragsnummer: ${data.vertragsnummer} Vertragsart: ${vertragName} Beitrag: ${betragText} ${hasPdf ? 'Im Anhang findest du deinen Vertrag als PDF.' : 'Der Vertrag ist in deinem Kundenbereich einsehbar.'} ---------------------------------- Widerrufsbelehrung ---------------------------------- Du hast das Recht, diesen Vertrag binnen 14 Tagen ohne Angabe von Gründen zu widerrufen. Die Frist beginnt mit dem Tag des Vertragsabschlusses. Der Widerruf kann schriftlich oder per E-Mail erfolgen. Mit freundlichen Grüßen Dein Plusfit-Team `.trim(), attachments: hasPdf ? [ { filename: `Vertrag_${data.vertragsnummer}.pdf`, path: pdfPath } ] : [] }); console.log(`📧 Vertragsmail gesendet an ${data.email}`); return true; } catch (err) { console.error('❌ Fehler beim Versand der Vertragsmail:', err); return false; } };