-
Notifications
You must be signed in to change notification settings - Fork 0
Mailing (E‐Mail)
Die E-Mail-Kompatibilität von Louis Smart CRM erlaubt es Benutzern, Rechnungen, Zahlungserinnerungen und personalisierte Kundenanschreiben direkt aus der Anwendung heraus zu versenden. Das Backend kotiert alle Mail-Vorgänge über eine verschlüsselte SMTP-Node.
Die Einstellungen zur E-Mail-Übertragung werden in der Tabelle sys_integrations_smtp_nodes abgelegt. Jedes Feld ist über das SmtpSettingsSchema in src/lib/schemas.ts gesichert:
-
smtp_host_name: Der SMTP Server (z.B.smtp.gmail.comodermail.yourdomain.de). -
smtp_port_number: Port des Servers (z.B. Port465für SSL/TLS oder Port587für STARTTLS). -
is_secure_connection: Boolean-Flag. Steuert, ob eine native TLS-Verschlüsselung erzwungen wird. -
smtp_user_name: Benutzername für den Server-Login. -
smtp_password_secret: Das zugehörige Passwort. Im Backend wird dieses Feld als geschütztes Secret behandelt und niemals im Client im Klartext ausgegeben. -
sender_email_address: Die tatsächliche Absenderadresse (z.B.rechnung@firma.de). -
sender_display_name: Optionaler Absendername (z.B."LOUIS Billing Service").
Louis AI darf unter keinen Umständen selbstständig oder eigenmächtig E-Mails an echte Kunden herausschicken. Dies ist eine feste Systembarriere zur Vermeidung von automatisiertem Spam und Falschaussagen (Halluzinationen).
- Der Benutzer bittet Louis AI: "Schreibe eine freundliche Zahlungserinnerung an Firma Bosch."
- Louis AI generiert den Text und legt einen Vorschlag (Draft / Proposed Change) in der Datenbank an.
- Der Benutzer sieht im UI in der Liste der ausstehenden Genehmigungen den E-Mail-Draft.
- Der Mail-Dialog (
src/components/MailDialog.tsx) öffnet sich. Der Benutzer kann den Betreff, den Inhalt und optionale Anhänge (wie die zugehörige PDF-Rechnung) modifizieren. - Erst nach Klick auf "Senden" durch den menschlichen Benutzer wird der eigentliche SMTP-Versand im Backend getriggert.
Der eigentliche Versand wird über das Node-Modul nodemailer abgewickelt (src/server/routers/settings.ts oder src/server/routers/louisAi.ts).
import nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
host: smtp.smtp_host_name,
port: smtp.smtp_port_number,
secure: smtp.is_secure_connection,
auth: {
user: smtp.smtp_user_name,
pass: smtp.smtp_password_secret,
}
});Falls der SMTP-Server eine Fehlermeldung zurückgibt (z.B. falsches Passwort oder Timeout am Port), fängt das Backend diesen Fehler ab und spiegelt dem Client eine detaillierte Fehlermeldung, anstatt abzustürzen.
Wird eine E-Mail im Kontext einer Rechnung versendet (z.B. Rechnungsversand), lädt das System im Hintergrund die generierte PDF/A-3b Datei und fügt sie als binären Datenstrom mit dem korrekten MIME-Type (application/pdf) an die E-Mail an. Auch zusätzliche Anhänge können als Base64-kodierte Dateien über das Feld customAttachments an die API übermittelt werden.