Bisher gab es nur einen globalen SMTP-Absender für alle Mailvorlagen. Jetzt kann je Bereich ein eigener Absendername/-adresse hinterlegt werden (z. B. support@… für Tickets, rechnung@… für Rechnungen); leer gelassene Felder fallen weiter auf den globalen SMTP-Absender zurück. Jede Vorlage ist fest einem Bereich zugeordnet (Migration 023: mail_templates.category, neue Tabelle mail_sender_profiles mit den drei Zeilen kundencenter/stoerungsticket/rechnungen). Außerdem: der Testmail-Versand (SMTP-Verbindung wie auch je Vorlage) zeigt jetzt den konkreten Fehler aus dem Mail-Protokoll an (z. B. "535 5.7.8 authentication failed") statt nur "Fehlgeschlagen". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
19 lines
1.3 KiB
SQL
19 lines
1.3 KiB
SQL
-- Getrennte Absender-Identitäten je Bereich (Kundencenter, Störungsticket, Rechnungen), optional abweichend
|
|
-- vom globalen SMTP-Absender (smtp_settings.from_name/from_email). Leer = globaler Absender wird verwendet.
|
|
CREATE TABLE mail_sender_profiles (
|
|
category ENUM('kundencenter','stoerungsticket','rechnungen') PRIMARY KEY,
|
|
name VARCHAR(150) NOT NULL,
|
|
from_name VARCHAR(150) NULL,
|
|
from_email VARCHAR(254) NULL,
|
|
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
|
updated_by CHAR(36) NULL REFERENCES users(id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
INSERT INTO mail_sender_profiles (category, name) VALUES
|
|
('kundencenter', 'Kundencenter (Zugang, Passwort, Zugangsdaten)'),
|
|
('stoerungsticket', 'Störungsticket (Support)'),
|
|
('rechnungen', 'Rechnungen');
|
|
|
|
ALTER TABLE mail_templates ADD COLUMN category ENUM('kundencenter','stoerungsticket','rechnungen') NOT NULL DEFAULT 'kundencenter';
|
|
UPDATE mail_templates SET category = 'kundencenter' WHERE `key` IN ('invite','password_reset','panel_credentials');
|
|
UPDATE mail_templates SET category = 'stoerungsticket' WHERE `key` IN ('ticket_created','ticket_message');
|
|
UPDATE mail_templates SET category = 'rechnungen' WHERE `key` IN ('invoice_issued');
|