Vertragsverwaltung_Plusfit24/utils/sendContractMail.js
2026-02-10 15:29:29 +00:00

103 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
};