email-versand


E-Mail Versand


Das E-Mail-Versand-Modul konfiguriert den SMTP-Versand für das gesamte Netzwerk. Alle ausgehenden E-Mails des Weinhold Frameworks – von Kalender-Erinnerungen bis zu Passwort-Reset-Mails – laufen über diese eine zentrale Konfiguration.

Allgemein

Konfiguration


SMTP-Server, Port, Verschlüsselung (TLS/SSL/keine), Benutzername und Passwort werden einmalig unter Weinhold → E-Mail Versand für das gesamte Netzwerk eingetragen. Einzelne Subsites können optional einen abweichenden Absendernamen und eine eigene Absenderadresse festlegen, sofern das netzwerkweit erlaubt ist. Ist kein SMTP konfiguriert, greift automatisch der lokale Mailserver über WordPress‘ Standard-wp_mail().

E-Mail-Templates


Andere Module können eigene E-Mail-Templates registrieren, die im Dashboard unter Weinhold → E-Mail Versand → Templates mit individuellem Betreff und Nachrichtentext angepasst werden können – netzwerkweit und zusätzlich pro Subsite überschreibbar. Aktuell nutzen u. a. Gerätesicherheit, Security Manager und Bastard des Monats dieses System für ihre Benachrichtigungs-Mails.

In der Praxis


Auf weinify.de läuft der gesamte transaktionale E-Mail-Versand – Passwort zurücksetzen, Kalender-Erinnerungen, Modul-Benachrichtigungen – über dieses Modul. Kein Plugin-Wirrwarr, eine zentrale Stelle.

Dateien

modules/email_delivery.php – einzige Datei des Moduls: SMTP-Konfiguration, Passwort-Verschlüsselung, Absender-Filter, komplettes E-Mail-Template-System, Admin-Oberflächen (Netzwerk + Site), Cleanup.

Für Entwickler

Ein eigenes Template registrieren


Beim eigenen Modul-Init über den Filter weinhold_email_templates einen Eintrag mit label, module, description, default_subject, default_body und variables registrieren. Immer verfügbare Platzhalter in jedem Template: {site}, {datetime}, {manage_url} – zusätzlich die selbst in variables gelisteten. Versand dann über weinhold_send_module_mail($template_id, $to, $context, $site_id) statt direktem wp_mail().

Auflösungsreihenfolge


Sowohl Absender als auch Betreff/Text eines Templates werden in der Reihenfolge Site-Override → Netzwerk-Anpassung → Modul-Default aufgelöst (weinhold_email_get_resolved_template()). Templates lassen sich netzwerkweit deaktivieren, dann sendet weinhold_send_module_mail() gar nicht erst.

SMTP-Erkennung & Passwortschutz


weinhold_email_delivery_should_use_smtp() nutzt SMTP nicht nur, wenn die Checkbox aktiv ist, sondern auch dann, wenn ein SMTP-Host UND Zugangsdaten/Auth gesetzt sind – schützt gegen ein versehentlich deaktiviertes SMTP bei sonst vollständig ausgefüllter Konfiguration. Das SMTP-Passwort wird nie im Klartext gespeichert, sondern mit AES-256-CBC verschlüsselt (Schlüssel aus dem WordPress-AUTH_KEY bzw. -Salt abgeleitet); alte Klartext-Werte werden beim Lesen automatisch erkannt und weiterhin akzeptiert (Migrationsfall).

Wichtige Funktionen


FunktionBeschreibung
weinhold_send_module_mail($template_id,$to,$context,$site_id)Zentraler Versand für Modul-E-Mails über das Template-System
weinhold_email_get_resolved_template($template_id,$site_id)Löst Betreff/Text/Absender eines Templates auf
weinhold_email_delivery_get_effective_settings()Liefert die tatsächlich wirksamen SMTP-/Absender-Einstellungen (inkl. Subsite-Override)
weinhold_email_delivery_send_test_mail($to,$scope)Versendet eine Test-Mail und fängt Fehler zur Anzeige im Dashboard ab

Besonderheiten

Absender-Override gilt nur temporär pro Mail: weinhold_send_module_mail() hängt bei abweichendem Template-Absender kurzzeitig eigene wp_mail_from/wp_mail_from_name-Filter ein und entfernt sie sofort nach dem Versand wieder – andere, zeitgleich versendete E-Mails bleiben unberührt.

Test-Ergebnisse werden als Transient gespeichert (24 Stunden), nicht dauerhaft in Optionen – nach dem Testen im Dashboard bleibt das Ergebnis eine Weile sichtbar, verschwindet danach automatisch von selbst.

Fällt die Verschlüsselung aus irgendeinem Grund aus (z. B. openssl-Erweiterung fehlt), wird das Passwort unverschlüsselt gespeichert statt den Vorgang abzubrechen – bewusste Entscheidung gegen Datenverlust, auf Kosten geringerer Sicherheit in diesem Randfall.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.