Kontaktformular: Mails kommen nicht an — die Ursachen zwischen Absenden und Posteingang
Ein Kontaktformular meldet „Danke für Ihre Nachricht“ — und die Anfrage kommt nie an. Zwischen Absenden und Posteingang liegen vier Stationen, und an jeder kann sie still verschwinden. So finden Sie die Stelle, mit einem Fall aus unserer eigenen Website.

„Vielen Dank, wir melden uns.“ Die Meldung erscheint, der Besucher wartet — und im Postfach kommt nichts an. Ein stilles Formular ist ein teurer Fehler, weil ihn niemand bemerkt: Der Absender glaubt, er habe angefragt; das Unternehmen glaubt, es gebe keine Anfragen.
Vier Stationen, an denen eine Anfrage verschwinden kann
| Station | was passiert | woran es scheitert |
|---|---|---|
| Formular | Daten werden an den Server geschickt | Skriptfehler, Pflichtfeld blockiert, Bot-Schutz zu scharf |
| Server | Server erzeugt eine Mail | mail() stellt lokal zu, Versanddienst lehnt ab, Fehler wird verschluckt |
| Versand | Mail geht an das Zielpostfach | SPF fehlt, keine DKIM-Signatur, Absenderadresse fremd |
| Postfach | Mail wird einsortiert | Spam-Ordner, Filterregel, Gruppenpostfach statt persönlichem |
Die Erfolgsmeldung im Formular bezieht sich oft nur auf die erste Station.
Unser eigener Fall: der Server stellte lokal zu
Bei der Umstellung unserer Website auf einen eigenen Server haben wir das Kontaktformular neu gebaut. Auf diesem Server ist unsere Domain als lokale Maildomain eingerichtet. Hätte der Server mit PHP mail() an unsere eigene Adresse gesendet, wäre die Mail auf dem Server selbst abgelegt worden. Unser echtes Postfach liegt aber bei Microsoft 365. Die Anfrage wäre nie angekommen, und keine Fehlermeldung hätte darauf hingewiesen.
Deshalb sendet der Endpunkt nicht über mail(), sondern über die Schnittstelle eines Versanddienstes, von einer eigenen, verifizierten Versand-Subdomain mit SPF und DKIM. Wie diese Einträge zusammenspielen, beschreibt der Ratgeber E-Mail-Zustellbarkeit verbessern.
Bausteine eines Formulars, das ankommt
- Versand über einen Dienst per Schnittstelle oder SMTP, mit eigener Signatur für Ihre Domain.
- Fehler nicht verschlucken: Scheitert der Versand, muss der Besucher das erfahren, und der Server muss es protokollieren.
- Bot-Schutz ohne Hürde: Ein unsichtbares Feld, das Menschen leer lassen und Bots ausfüllen, und eine Begrenzung der Anfragen je Absender halten viele Spam-Anfragen ab.
- Herkunft mitschicken: Seite, gewählte Leistung und Kampagnenparameter gehören in die Mail. Unsere Anfragen enthalten diese Angaben. Dass Kampagnenparameter auf dem Weg zum Formular verloren gehen können, haben wir an der eigenen Website erlebt — mehr dazu in Landingpage erstellen lassen.
- Keine Zusage, die nicht zu halten ist: Die Bestätigung sagt, was als Nächstes passiert, ohne eine Antwortzeit zu versprechen, die niemand garantieren kann.
So testen Sie Ihr Formular
- Testanfrage mit eindeutigem Text senden, etwa mit Datum und Uhrzeit im Betreff.
- Server-Log prüfen: Wurde die Anfrage angenommen und an den Versand übergeben?
- Protokoll des Versanddienstes: Steht die Mail dort als zugestellt oder als abgelehnt?
- Header im Postfach lesen: SPF, DKIM und DMARC sollten bestehen.
- Spam-Ordner und Regeln prüfen, bei Gruppen den Gruppenposteingang.
- Regelmäßig wiederholen — nach jedem Update von Website, Plugin oder Hosting.
So haben wir unser eigenes Formular abgenommen: Zustellung im Protokoll des Versanddienstes und im Zielpostfach geprüft, nicht nur die Meldung im Browser.
Ein Formular ist erst getestet, wenn die Anfrage im Postfach liegt — mit Herkunft. Die Erfolgsmeldung im Browser beweist nur die erste von vier Stationen.
Häufige Fragen
- Warum zeigt das Formular „gesendet“, obwohl nichts ankommt?
- Weil die Meldung meist nur bestätigt, dass der Server die Daten erhalten hat. Ob der anschließende Versand gelingt, prüft das Formular in vielen Fällen nicht.
- Was ist das Problem mit PHP mail()?
- mail() übergibt die Nachricht an das Mailsystem des Servers. Ist dort die eigene Domain als lokale Domain eingerichtet, bleibt die Mail auf dem Server. Außerdem fehlen oft SPF-Freigabe und DKIM-Signatur, sodass externe Postfächer die Mail als verdächtig einstufen.
- Wie schütze ich das Formular vor Spam, ohne Besucher zu nerven?
- Ein unsichtbares Honeypot-Feld und eine Begrenzung der Anfragen je Absender halten viele Bots ab, ohne dass Besucher etwas lösen müssen. Ein Captcha ist erst nötig, wenn das nicht reicht.
- Wohin sollen Anfragen gehen?
- An ein Postfach, das mehrere Personen sehen, und zusätzlich in ein System, in dem Anfragen nicht verloren gehen. Bei Gruppenpostfächern in Microsoft 365 landen Mails im Gruppenposteingang, nicht im persönlichen.
- Welche Angaben sollte eine Anfrage-Mail enthalten?
- Neben Name, Kontakt und Nachricht: die Seite, von der die Anfrage kam, die gewählte Leistung und vorhandene Kampagnenparameter. Ohne sie lässt sich nicht sagen, welche Seite oder Kampagne Anfragen bringt.
