Files
erp-system/lib/email.ts
T
2026-05-20 18:58:23 +00:00

48 lines
1.4 KiB
TypeScript

// /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, '<br>'),
});
console.log("E-Mail erfolgreich gesendet: %s", info.messageId);
} catch (error) {
console.error("Fehler beim Senden der E-Mail:", error);
}
}