Kontaktformulare und Nachrichten
Kontaktformular und Kontaktnachrichten sind erstklassige WebBlocks-CMS-Funktionen. Verwenden Sie für Kontaktseiten den nativen contact_form-Block anstelle von Trusted HTML, rohem Formular-Markup oder mailto:-Fallbacks.
Dieser Leitfaden fasst das benutzerorientierte Verhalten von Kontaktformular und Kontaktnachrichten zusammen, das in Blockverträgen, öffentlichen Render-Verträgen, der Internal-Content-API-Dokumentation und der README dokumentiert ist. Er definiert kein neues Laufzeitverhalten.
Überblick
Der Kontaktformular-Block rendert ein echtes öffentliches Formular und speichert akzeptierte Nachrichten im CMS. Kontaktnachrichten bietet Administratoren einen Prüfbildschirm für diese Einsendungen, einschließlich Status, Spam-Prüfsignalen, Benachrichtigungsstatus und sicheren Details zu Zustellfehlern.
Das CMS behandelt Speicherung und E-Mail-Benachrichtigung als getrennte Anliegen:
- akzeptierte echte Einsendungen werden gespeichert, bevor eine Benachrichtigung versucht wird
- die Benachrichtigung kann erfolgreich sein, fehlschlagen oder übersprungen werden, ohne dass sich daran etwas ändert, dass das CMS die öffentliche Einsendung akzeptiert hat
- öffentliche Besucher sollten generische Erfolgs- oder Validierungsrückmeldungen sehen, keine Spam-Bewertung oder Zustellungsinterna
Einen Kontaktformular-Block hinzufügen
Fügen Sie den Block über die Blockauswahl des Page Builders hinzu. Das native Block-Handle lautet:
contact_form
Der Kontaktformular-Block ist kein Kind-Container. Er besitzt die öffentliche Formularfläche und akzeptiert verschachtelte Inhaltsblöcke nicht als sein normales Kompositionsmodell.
Eine typische Kontaktseite verwendet strukturierte Inhalte rund um das native Formular:
main slot
section
container
content_header or hero
contact_form
KI-/Operator-Tools sollten dieselbe Art von Struktur aufbauen, nachdem die Live-Discovery die verfügbaren Handles bestätigt hat. Sie sollten keine Formulare mit Trusted HTML, rohem <form>-Markup oder mailto:-Links erstellen, wenn contact_form in der Ziel-CMS-Installation vorhanden ist.
Felder des Kontaktformular-Blocks
Sichtbare Texte sind übersetzbar:
titleoder Überschriftcontentoder Einleitungstextsubmit_labelsuccess_message
Gemeinsame operative Einstellungen liegen in den Blockeinstellungen:
recipient_emailsend_email_notificationstore_submissions
Halten Sie redaktionelle Texte und operatives Routing getrennt. Der Formulartext kann je nach Sprache (Locale) variieren, während Empfänger- und Benachrichtigungseinstellungen für den Block gemeinsam bleiben.
Öffentliches Absendeverhalten
Der öffentliche Renderer erzeugt ein natives Browser-Formular, das an folgende Adresse sendet:
POST /contact-messages
Das Formular ist CSRF-geschützt und validiert die normalen Besucherfelder.
Pflichtfelder:
nameemailmessage
Optionales Feld:
subject
Vom Renderer generiertes Anti-Spam-Prüffeld:
_form_check_namesignierte Metadatenform_check_{token}generiertes Prüffeld
Der Renderer erstellt diese Felder automatisch. Erstellen Sie sie nicht manuell in Inhalten, rohem HTML oder API-Payloads. Das Prüffeld ist nicht Teil der normalen Besuchereingabe, und das alte website-Feld gehört nicht mehr zum öffentlichen Kontaktformular-Vertrag.
Einsendungen mit ausgefülltem Prüffeld erhalten dasselbe generische Erfolgsverhalten wie eine normal akzeptierte Einsendung, werden aber nicht gespeichert und lösen keine Benachrichtigung aus. Sehr schnelle automatisierte Einsendungen werden genauso behandelt. Öffentliche Besucher sollten keine Spam- oder Zustelldiagnosen erhalten.
Speicherung und Kontaktnachrichten-Verwaltung
Akzeptierte echte Einsendungen werden gespeichert, bevor eine E-Mail-Benachrichtigung versucht wird.
Admin-Pfad:
/webadmin/contact-messages
Kontaktnachrichten ist ein Admin-Prüfbildschirm. Es ist keine öffentliche Auflistung und keine öffentliche Zustell-API.
Der Admin-Bildschirm ermöglicht CMS-Benutzern die Prüfung von Einsendungen auf Benutzerhandbuch-Niveau:
- Nachrichtenstatus wie neu, gelesen, beantwortet, archiviert oder Spam
- Kontext der Ursprungsseite, sofern verfügbar
- Spam-Score und Spam-Grund-Labels zur Prüfung
- ob die Benachrichtigung übersprungen, gesendet, fehlgeschlagen oder ausstehend ist
- sichere Fehlerdetails, wenn die Zustellung der Benachrichtigung fehlschlägt
Der E-Mail-Benachrichtigungsstatus betrifft ausschließlich das Benachrichtigungsverhalten:
Sentbedeutet, dass das CMS die Nachricht ohne Ausnahme an den konfigurierten Mail-Transport übergeben hat. Eine Zustellung ins Postfach ist damit nicht garantiert.Failedbedeutet, dass ein echter Benachrichtigungsversand versucht wurde und Laravel eine Ausnahme gemeldet hat. Das gespeicherte Detail ist bereinigt und darf keine Passwörter, Tokens, rohes.envoder Stacktraces enthalten.Skippedbedeutet, dass keine Benachrichtigung versucht wurde, in der Regel weil der Block die Benachrichtigung deaktiviert hat.Not configuredbedeutet, dass keine Benachrichtigung versucht wurde, weil kein Empfänger verfügbar war, der Mailerlog,arrayodernullist oder die SMTP-Einstellungen so unvollständig sind, dass kein ausgehender Versand möglich ist.Pendingist Einträgen vorbehalten, für die noch kein Benachrichtigungsversuch oder keine Auflösung vorliegt.
Bei älteren gespeicherten Nachrichten kann der Benachrichtigungsstatus aus den Legacy-Feldern sent/error abgeleitet sein. Das CMS schreibt diese historischen Einträge nicht automatisch um.
Kontaktnachrichten folgt außerdem dem gemeinsamen Admin-Listenverhalten für die Massenlöschung ausgewählter Einträge, sofern verfügbar. Behandeln Sie die Löschung als administrative Aufräumaktion, nicht als Teil der normalen öffentlichen Formularverarbeitung.
Spam-Behandlung
Die Spam-Behandlung hat zwei Ebenen.
Die Ebene des vom Renderer generierten Prüffelds ist das sofortige Verwerfen:
- das versteckte generierte Feld
form_check_{token}sollte bei normalen Besuchern leer bleiben - Einsendungen mit ausgefülltem Prüffeld erhalten eine generische Erfolgsmeldung
- Prüffeld-Einsendungen werden nicht gespeichert
- Prüffeld-Einsendungen lösen keine Benachrichtigung aus
Einsendungen, die das generierte Prüffeld passieren, können dennoch konservativ bewertet werden. Aktuelle Beispiele für Bewertungssignale sind:
- hohe Linkdichte oder mehrere Links
- kommerzielle Ansprache-Sprache
- generische verkaufsartige Betreff- und Nachrichtenkombinationen
- wiederholte Einsendungen von derselben IP-Adresse
Bewerteter Spam wird bewusst mit Spam-Status zur Admin-Prüfung aufbewahrt. Beschreiben Sie eine automatische Spam-Löschung nicht als aktuelles Verhalten. Ein konfigurierbarer Schwellenwert zum automatischen Verwerfen ist nur eine mögliche künftige Richtung nach Beobachtung von Produktionsdaten.
Fallback-Kette der E-Mail-Benachrichtigung
Die Kontaktformular-Benachrichtigung verwendet diese Empfängerreihenfolge:
recipient_emailauf Blockebene- Standard-Kontaktempfänger der aktuellen Site aus
Edit Site -> Contact CONTACT_RECIPIENT_EMAILMAIL_FROM_ADDRESSals letzter sicherer Fallback
Der Speichererfolg ist vom Benachrichtigungserfolg getrennt. Eine öffentliche Erfolgsmeldung bedeutet, dass das CMS den Nachrichtenfluss akzeptiert hat, nicht unbedingt, dass die E-Mail-Zustellung erfolgreich war. Administratoren sollten Kontaktnachrichten auf Benachrichtigungsstatus und sichere Fehlerdetails prüfen.
E-Mail-Einrichtung
Kontaktformular-Benachrichtigungen verwenden den Laravel-Mailversand. Typische SMTP-Einstellungen in der .env sind:
MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Site Name"
CONTACT_RECIPIENT_EMAIL=contact@example.com
MAIL_* steuert den Laravel-Mail-Transport. MAIL_FROM_ADDRESS ist die sichere Fallback-Absenderadresse und der letzte sichere Empfänger-Fallback. CONTACT_RECIPIENT_EMAIL ist optional und wird nur verwendet, wenn Block- und Site-Empfänger leer sind. Bevorzugen Sie für das normale Site-Routing den Kontaktempfänger auf Site-Ebene unter Site -> Edit -> Contact.
Verwenden Sie für Produktionsbenachrichtigungen einen echten ausgehenden Mailer wie SMTP. MAIL_MAILER=log, MAIL_MAILER=array und MAIL_MAILER=null sind für Entwicklung oder Tests nützlich, aber Kontaktnachrichten zeigt diese als nicht konfiguriert statt als gesendet an, weil kein echter ausgehender Benachrichtigungsversuch stattfand.
Leeren Sie nach dem Bearbeiten der .env-Mail-Einstellungen auf einer Produktions- oder Paketinstallation die zwischengespeicherte Konfiguration, wenn Config-Caching aktiv sein könnte:
php artisan optimize:clear
Fehlerbehebung und Diagnose
Verwenden Sie für die lokale Entwicklung einen lokalen SMTP-Catcher oder ein vertrauenswürdiges SMTP-Testkonto. Vermeiden Sie es, die Kontaktzustellung gegen persönliche oder Produktionspostfächer zu testen, es sei denn, der Operator hat diese Umgebung absichtlich so konfiguriert.
Der Diagnosebefehl lautet:
php artisan contact:mail-diagnose
Verwenden Sie eine bestimmte Kontaktformular-Block-ID, um den Empfänger-Fallback für diesen Block zu prüfen:
php artisan contact:mail-diagnose --block=ID
Verwenden Sie eine kontrollierte SMTP-Versandprüfung nur, wenn die Ziel-Testadresse beabsichtigt ist:
php artisan contact:mail-diagnose --send-test=address@example.com
Diagnosen dürfen keine Passwörter, Tokens, Mail-Geheimnisse oder rohe sensible Konfiguration ausgeben. Fehlgeschlagene, übersprungene und nicht konfigurierte Benachrichtigungsdetails können in Kontaktnachrichten eingesehen werden. Behandeln Sie Kontaktnachrichten als maßgebliche Quelle für gespeicherte Einsendungen und deren Benachrichtigungsstatus.
Checkliste zur Veröffentlichungsbereitschaft
Vor dem Veröffentlichen oder Ankündigen einer öffentlichen Kontaktseite:
- Bestätigen Sie, dass der Admin-Login funktioniert.
- Bestätigen Sie, dass Site-Identität und Domain-Einstellungen korrekt sind.
- Konfigurieren Sie den
MAIL_*-Versand oder genehmigte System-Mail-Einstellungen. - Konfigurieren Sie den Kontaktempfänger, vorzugsweise unter
Site -> Edit -> Contact. - Führen Sie
php artisan contact:mail-diagnoseaus. - Zeigen Sie eine Seite mit dem nativen
contact_form-Block in der Vorschau an oder veröffentlichen Sie sie. - Senden Sie eine Testnachricht mit Name, E-Mail, Betreff und Nachricht.
- Bestätigen Sie, dass
/webadmin/contact-messagesdie gespeicherte Nachricht anzeigt. - Prüfen Sie den Benachrichtigungsstatus und etwaige sichere Fehlerdetails.
Wenn die Benachrichtigung fehlschlägt, die Nachricht aber gespeichert wurde, behandeln Sie dies als Mail-Zustellungsproblem, nicht als fehlgeschlagene öffentliche Formulareinsendung.
Internal Content API und KI-Operator-Unterstützung
Die Internal Content API ist für vertrauenswürdige KI-/Operator-Tools gedacht. Sie ist keine öffentliche Zustell-API und keine Integration eines KI-Anbieters.
KI-/Operator-Tools sollten mit einer Live-Discovery beginnen:
GET /webadmin/api
Verwenden Sie dann die entdeckten Links für die aktuellen Verträge:
GET /webadmin/api/content-contract
GET /webadmin/api/block-types
GET /webadmin/api/examples/contact-page
GET /webadmin/api/examples/contact-page demonstriert die native Verwendung von contact_form. KI-/Operator-Tools dürfen keine Handles raten und keine Kontaktformulare mit Trusted HTML, rohem Formular-Markup oder mailto:-Links erstellen, wenn der native Kontaktformular-Block verfügbar ist.
Das Anwenden von Inhalten bleibt Entwurf-zuerst und veröffentlicht standardmäßig nicht. Operatoren sollten Pläne validieren, erst nach ausdrücklicher Genehmigung anwenden, die Entwurfsseite in der Vorschau prüfen und das Veröffentlichen einem Menschen oder einem ausdrücklich genehmigten Workflow überlassen.
Verwandte Dokumente
Datenschutz und Timing für Site-Benachrichtigungen (CMS 1.95.0)
Wählen Sie unter Sites → Bearbeiten → Kontakt den Inhalt der freigegebenen Benachrichtigung und die Zustellungshäufigkeit aus. Kontaktformulare und teilnehmende Plugins, einschließlich Live Chat 0.7.0, übernehmen diese Richtlinie. Jeder Kanal verfügt weiterhin über einen eigenen Opt-In-Schalter und eine eigene Empfängerkonfiguration. Ein Plugin kann die Option „Nur Warnungen“ der Website nicht außer Kraft setzen.
fullspeichert detaillierte Kontakt- und Chat-Benachrichtigungen, einschließlich detaillierter Batches.alert_onlysendet eine vertrauenswürdige Site-Kopie, eine Nachrichtenanzahl und einen authentifizierten CMS-Posteingangslink. Besuchernamen, E-Mail-Adressen, Nachrichtenbetreff/-text, Quell-URLs, IP-Adressen, Browserdetails, Referrer und private Chat-Tokens sind ausgeschlossen. Besucher-Antworten, benutzerdefinierte Header und Anhänge sind verboten.immediatesendet jede berechtigte Benachrichtigung sofort.batchedsendet sofort die erste Kontaktbenachrichtigung und kombiniert dann nach dem Batch-Intervall weitere Kontaktnachrichten für denselben Standort und Empfänger. Live-Chat-Batches innerhalb jeder Konversation, sodass eine neue Offline-Konversation sofort ihre erste Benachrichtigung erhält. Das Standardintervall beträgt zehn Minuten; Der unterstützte Bereich liegt zwischen 1 und 60 Minuten.dailykombiniert berechtigte Kanäle in einer täglichen Zusammenfassung pro Standort und Empfänger, die nur die Zählung zählt. Tägliche Zusammenfassungen verwenden immer minimalen Inhalt, auch wenn der ausgewählte Benachrichtigungsmodusfullist.
Der separate Schalter daily_summary erinnert die Empfänger an den Folgetagen an noch ausstehende Arbeiten. Bei täglicher Zustellung und deaktiviertem Schalter erzeugen nur neu registrierte Nachrichten eine tägliche Benachrichtigung. Zusammenfassungen zählen ungelesene und auf Antworten wartende Arbeiten getrennt, wobei Kanalbezeichnungen Kontaktnachrichten von Chat-Konversationen unterscheiden. Beim Lesen einer Kontaktnachricht wartet diese auf eine Antwort. Beantwortete, archivierte, Spam- und Quarantäne-Datensätze sind ausgeschlossen. Live Chat verwendet den letzten Absender, um festzustellen, ob eine offene Konversation auf eine Antwort des Operators wartet; Wenn Sie schließen oder antworten, wird es aus dieser Zählung entfernt. Abgemeldete Kanäle tragen nicht zu Zusammenfassungen bei.
Neue Sites verwenden standardmäßig alert_only, zehnminütige Stapelverarbeitung und eine tägliche Zusammenfassung um 09:00 Uhr in der Site-Zeitzone. Vorhandene Websites behalten full, sofortige Zustellung und deaktivierte Zusammenfassungen während des Upgrades bei. Aktivieren Sie diese Funktionen explizit für vorhandene Installationen. Das Tagesfenster wird einmal pro Standorttag überprüft: Keine ausstehenden Arbeiten bedeuten, dass keine E-Mails gesendet werden, und spätere Ankünfte gehören zur Zusammenfassung des nächsten Tages.
Hosts müssen den Scheduler von Laravel jede Minute ausführen, beispielsweise über den üblichen Cron-Eintrag php artisan schedule:run. Das Paket registriert jede Minute webblocks:notifications:dispatch; Es kann auch explizit zur Wartung aufgerufen werden. Gestapelte und tägliche E-Mails bleiben ausstehend, während der Planer gestoppt ist. Mehrere Worker müssen sich einen Cache teilen, der atomare Sperren unterstützt. Admin-Links verwenden die vertrauenswürdige Anwendungs-URL. Lassen Sie APP_URL für den CMS-Host konfiguriert. Sie bieten keine Anmeldeumgehung und erzwingen normale Konto- und Site-Berechtigungen.
Im Bereich „Site-Einstellungen“ und in der Benachrichtigungs-API werden die Lieferergebnisse angezeigt. Der Kontakt-Posteingang behält den Status jeder Übermittlung bei. Die Ergebnisse beschreiben die Transportübergabe, nicht die garantierte Zustellung im Posteingang. Mail verwendet bei der Konfiguration die benutzerdefinierten E-Mail-Einstellungen des CMS, ansonsten die E-Mail-Einstellungen der Umgebung. SMTP-Ausnahmen und Nachrichtennutzlasten werden nicht in Zustellungsaufträge oder Fehlerdetails kopiert. Zustellversuche werden nicht automatisch wiederholt; Unterbrochene Versuche werden nach fünfzehn Minuten als fehlgeschlagen markiert. Die Benachrichtigungsbuchhaltung wird dreißig Tage lang getrennt von den ursprünglichen Nachrichtenaufzeichnungen aufbewahrt. Deaktivierte Plugins werden nicht versendet; Wenn Sie einen Chat schließen oder sich abmelden, werden die in der Warteschlange befindlichen Benachrichtigungen abgebrochen.
Diese Funktion bietet Nachrichtenbenachrichtigungen und Erinnerungen an ausstehende Arbeiten. Es wird keine allgemeine Überwachung der Website-Verfügbarkeit eingeführt und es werden keine Betreiberantworten an Besucher gesendet.
Planerzustand (CMS 1.95.1)
Das Dashboard undWebsites → Bearbeiten → KontaktZeigt den aufgezeichneten Zustand des Planers, den letzten geplanten Herzschlag und den letzten abgeschlossenen Benachrichtigungslauf an. Die Site-Benachrichtigungs-API gibt dasselbe zurückscheduler_healthObjekt. Das Registrieren einer Aufgabe oder das sofortige Versenden einer E-Mail bestätigt nicht, dass der Planer funktioniert. Es fehlen HinrichtungsbeweiseNoch nicht verifiziert; Beweise, die älter als fünf Minuten sindVerzögert. Verarbeitungsfehler und fehlende Schemata werden unterschieden und ein Live-Lauf kann kurz angezeigt werdenIm Gange.
Wenn die gestapelte/tägliche Zustellung oder die täglichen Zusammenfassungen aktiviert sind, wird bei nicht überprüfter oder verzögerter Planung eine auffällige Warnung angezeigt, dass Benachrichtigungen möglicherweise noch ausstehen. Der Serveradministrator oder Hosting-Anbieter ist für die einmalige Einrichtung verantwortlich; sehenInstallation. Durch den manuellen Aufruf des Dispatch-Befehls wird kein geplanter Heartbeat erstellt. Ein fehlerfreier Ausführungsdatensatz garantiert keine Zustellung im Posteingang; Überprüfen Sie weiterhin die Zustellungsergebnisse pro Nachricht.