// /opt/erp-system/lib/email.ts import nodemailer from 'nodemailer'; import prisma from './prisma'; interface EmailOptions { to: string; subject: string; text: string; html?: string; } export async function sendEmail({ to, subject, text, html }: EmailOptions) { try { // 1. Aktuelle Einstellungen aus der Datenbank laden const settings = await prisma.systemSettings.findFirst({ where: { id: 1 } }); // 2. Prüfen, ob SMTP konfiguriert ist if (!settings || !settings.smtpHost || !settings.smtpUser || !settings.smtpPass) { console.warn("WARNUNG: SMTP-Einstellungen fehlen in der GUI. E-Mail an", to, "wird abgebrochen."); return; } // 3. Transporter dynamisch mit den DB-Daten erstellen const transporter = nodemailer.createTransport({ host: settings.smtpHost, port: settings.smtpPort, secure: settings.smtpPort === 465, // true für Port 465, sonst false (STARTTLS) auth: { user: settings.smtpUser, pass: settings.smtpPass, }, }); // 4. E-Mail senden const info = await transporter.sendMail({ from: settings.smtpFrom || settings.smtpUser, to, subject, text, html: html || text.replace(/\n/g, '
'), }); console.log("E-Mail erfolgreich gesendet: %s", info.messageId); } catch (error) { console.error("Fehler beim Senden der E-Mail:", error); } }