E-Mail-Adressen und Telefonnummern in WordPress vor Spam-Bots schützen
E-Mail-Adresse und Telefonnummer im Impressum sind Pflicht und ein beliebtes Ziel für Spam-Harvester. So kodieren Sie beide in WordPress mit Email Address Encoder, Shortcode und antispambot(), ohne Besucher zu behindern, und finden die Lücken.
Mit KI erstellt – redaktionelle Prüfung ausstehend
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Mehr dazu

Im Impressum einer Unternehmenswebsite muss eine E-Mail-Adresse stehen, und meist auch eine Telefonnummer. Genau diese Angaben sammeln automatisierte Programme ein, sogenannte Harvester, und füttern damit Spam-Listen. Ganz verhindern lässt sich das nicht, denn die Adresse muss für Menschen lesbar bleiben. Sie können es Robotern aber deutlich schwerer machen, ohne Besucher zu behindern. Diese Anleitung zeigt drei Wege in WordPress: das Plugin Email Address Encoder, die WordPress-Funktion antispambot() und einen Shortcode für Telefonnummern. Außerdem erfahren Sie, an welchen Stellen der Schutz nicht greift. Alle Ausgaben stammen aus einer Testinstanz mit WordPress 7.1.2.
Voraussetzungen
- WordPress: eine aktuelle Version. Getestet mit WordPress 7.1.2, PHP 8.4 und dem Blocktheme Twenty Twenty-Five. Email Address Encoder 1.0.25 setzt laut Plugin-Verzeichnis PHP 5.3 und WordPress 2.0 voraus.
- Rolle: Administrator im WordPress-Backend.
- Zugriff: Backend für Plugin und Inhalte. Für den Weg per
antispambot()zusätzlich FTP/SFTP oder den Dateimanager Ihres Hosters. curl auf der Kommandozeile erleichtert die Kontrolle. - Backup: ein aktuelles Backup von Dateien und Datenbank, bevor Sie Plugins installieren oder Code-Dateien anlegen.
- Überblick: eine Liste der Seiten, auf denen E-Mail-Adressen oder Telefonnummern stehen: Impressum, Kontakt, Datenschutzerklärung, Fußzeile, Team-Seite.
Schritt 1: Ausgangslage im Quelltext prüfen
Harvester lesen den HTML-Quelltext, nicht die gerenderte Seite. Prüfen Sie deshalb genau diesen. Mit curl sehen Sie, was ein einfacher Roboter sieht:
curl -s https://ihre-domain.de/impressum/ | grep -Eo '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[a-z]{2,}' | sort -u
Im Labor haben wir eine Seite „Impressum“ mit der Adresse info@beispiel-firma.de als Text, als mailto:-Link und einer Telefonnummer als tel:-Link angelegt. Ohne Schutz lieferte der Befehl die Adresse sofort, und im Quelltext stand die Telefonnummer im Klartext. Ohne curl öffnen Sie im Browser die Ansicht „Seitenquelltext anzeigen“ und suchen nach @. Nutzen Sie nicht die Entwicklertools: Laut Plugin-Beschreibung von Email Address Encoder dekodieren Chrome, Safari und andere dort HTML-Entitäten automatisch, Sie würden also auch geschützte Adressen im Klartext sehen.
Verifizieren: Sie wissen für jede Seite aus Ihrer Liste, welche Adressen und Nummern im Klartext im Quelltext stehen.
Schritt 2: Rechtlichen Rahmen beachten
Für geschäftsmäßige digitale Dienste verlangt § 5 Abs. 1 Nr. 2 des Digitale-Dienste-Gesetzes (DDG) Angaben, die eine schnelle elektronische Kontaktaufnahme und eine unmittelbare Kommunikation ermöglichen, „einschließlich der Adresse für die elektronische Post“. Diese Informationen müssen leicht erkennbar, unmittelbar erreichbar und ständig verfügbar sein. Daraus folgen Grenzen für den Spam-Schutz:
- Die Adresse muss für Besucher lesbar bleiben. Umschreibungen wie „info [at] beispiel-firma [punkt] de“ sind für Besucher unbequem, weil sie die Adresse nicht direkt übernehmen können.
- Ein Bild mit der Adresse ist für Screenreader ohne Alternativtext nicht lesbar und nicht kopierbar.
- Ein Kontaktformular ersetzt die E-Mail-Adresse nicht, denn das Gesetz nennt sie ausdrücklich.
Die hier gezeigte Kodierung als HTML-Entitäten ändert nur den Quelltext. Besucher sehen und kopieren die Adresse wie gewohnt. Diese Anleitung ersetzt keine Rechtsberatung.
Verifizieren: Ihr Impressum enthält die E-Mail-Adresse weiterhin als lesbaren Text, und Sie verzichten auf Bilder oder Umschreibungen.
Schritt 3: Email Address Encoder installieren
Das Plugin Email Address Encoder durchsucht Inhalte über WordPress-Filter und kodiert gefundene Adressen in dezimale und hexadezimale HTML-Entitäten. Es funktioniert ohne JavaScript. Installieren Sie es unter „Plugins“ → „Plugin hinzufügen“ mit der Suche nach „Email Address Encoder“ oder per WP-CLI:
wp plugin install email-address-encoder --activate
wp language plugin install email-address-encoder de_DE
Eine Konfiguration ist nicht nötig. Im Labor sah der Quelltext des Impressums direkt nach der Aktivierung so aus:
E-Mail: info@be…
<a href="mailto:i…">Schreiben Sie uns</a>
Sowohl der Text als auch der mailto:-Link waren kodiert, der Befehl aus Schritt 1 fand keine Adresse mehr. Im Browser war die Adresse unverändert lesbar und klickbar.
Laut Quellcode greift das Plugin in den Filtern the_content, the_excerpt, widget_text, comment_text, comment_excerpt und bei Menüeinträgen. Die Einstellungen finden Sie unter „Einstellungen“ → „E-Mail-Encoder“. Dort legen Sie die Filterpriorität fest, Standard ist 1000, damit andere Plugins vorher fertig sind. Der Ganzseitenscanner und weitere Kodierungsarten sind der kostenpflichtigen Premium-Version vorbehalten. Auf der Einstellungsseite bietet das Plugin zudem automatische Warnungen per E-Mail an, für die Sie sich beim Hersteller registrieren. Diese Registrierung ist optional und für den Schutz nicht nötig.
Verifizieren: Der curl-Befehl aus Schritt 1 findet auf den Inhaltsseiten keine Adresse mehr, im Browser ist sie lesbar und der Link öffnet Ihr E-Mail-Programm.
Schritt 4: Telefonnummern mit dem Shortcode schützen
Telefonnummern erkennt das Plugin nicht automatisch. Dafür gibt es den Shortcode [encode]. Fügen Sie im Block-Editor einen Block „Shortcode“ ein und tragen Sie ein:
[encode link="tel:+4935112345678"]0351 12345678[/encode]
Im Labor wurde daraus ein Link, bei dem sowohl das Ziel tel:+4935112345678 als auch der sichtbare Text vollständig als Entitäten im Quelltext standen. Schreiben Sie die Nummer im tel:-Link im internationalen Format mit Ländervorwahl, damit Mobiltelefone sie direkt wählen können. Ohne link kodiert der Shortcode nur den Text.
Verifizieren: Im Quelltext steht die Nummer nicht mehr im Klartext, auf dem Smartphone startet ein Tippen auf die Nummer den Anruf.
Schritt 5: Adressen im Theme mit antispambot() schützen
E-Mail-Adressen in Fußzeilen klassischer Themes, in eigenen Vorlagen oder in Feldern von Plugins laufen oft nicht durch die Filter aus Schritt 3. Hier hilft die WordPress-Funktion antispambot(). Sie wandelt Zeichen zufällig in HTML-Entitäten um, mit dem zweiten Parameter 1 zusätzlich teilweise in URL-Kodierung für mailto:-Links. Ein kleines Must-Use-Plugin stellt dafür einen eigenen Shortcode bereit. Legen Sie die Datei wp-content/mu-plugins/firmen-mail.php an:
<?php
/**
* Plugin Name: Shortcode für geschützte E-Mail-Adresse
*/
add_shortcode( 'firmen_mail', function () {
$mail = 'info@beispiel-firma.de';
return sprintf( '<a href="mailto:%s">%s</a>', antispambot( $mail, 1 ), antispambot( $mail ) );
} );
Den Shortcode [firmen_mail] können Sie anschließend überall einsetzen, wo Shortcodes ausgewertet werden, etwa in einem Shortcode-Block in einem Template-Teil der Fußzeile. Im Labor lieferte er einen Link, bei dem Ziel und Text gemischt kodiert waren, zum Beispiel mailto:info@%62e…. Ein Must-Use-Plugin übersteht Theme-Wechsel und lässt sich im Backend nicht versehentlich deaktivieren. In PHP-Vorlagen eines Child-Themes rufen Sie antispambot() direkt auf, Hinweise zum Child-Theme finden Sie in Child-Theme anlegen und Anpassungen bei Theme-Updates behalten.
Verifizieren: Der Shortcode erzeugt einen funktionierenden E-Mail-Link, und der curl-Befehl findet die Adresse nicht mehr im Klartext.
Schritt 6: Lücken finden und dauerhaft kontrollieren
Keiner der Wege schützt automatisch die ganze Seite. Im Labor haben wir die Adresse testweise in den Untertitel der Website unter „Einstellungen“ → „Allgemein“ eingetragen. Sie stand danach im Klartext im Quelltext, obwohl das Plugin aktiv war, und auch die öffentliche Übersicht der REST-API unter /wp-json/ gab sie im Feld description aus. Der Seiteninhalt selbst blieb in der REST-API dagegen kodiert. Prüfen Sie besonders:
- Untertitel und Titel der Website
- Kopf- und Fußzeilen des Themes sowie Template-Teile
- Formulare und deren Bestätigungstexte, siehe auch WordPress-Formulare absichern
- Autorenprofile, strukturierte Daten von SEO-Plugins und PDF-Dateien in der Mediathek
Wiederholen Sie die Prüfung aus Schritt 1 für alle Seiten. Ein neues Theme, ein Plugin-Update oder eine neue Fußzeile kann wieder eine Adresse im Klartext einbringen. Nehmen Sie die Prüfung deshalb in Ihre Routine nach Änderungen auf. Wer diese Kontrolle zusammen mit Updates und Backups nicht selbst im Kalender halten möchte, kann sie abgeben: Die WordPress-Wartung von wordpressupdate.de spielt Updates von WordPress, Plugins und Themes mit Kompatibilitätsprüfung ein, sichert wöchentlich auf externen Speicher und kümmert sich um die Firewall.
Verifizieren: Auf keiner Seite und in /wp-json/ steht eine Adresse im Klartext, oder Sie haben bewusst entschieden, sie dort stehen zu lassen.
Typische Fehler
- Adresse erscheint in den Entwicklertools im Klartext: Das ist normal, die Werkzeuge dekodieren Entitäten. Prüfen Sie mit „Seitenquelltext anzeigen“ oder curl.
- Adresse im Untertitel oder Theme bleibt sichtbar: Diese Bereiche laufen nicht durch die Filter des Plugins. Adresse dort entfernen oder per
antispambot()ausgeben. - Shortcode erscheint als Text: Er steht in einem Absatz-Block statt im Block „Shortcode“, oder der Bereich wertet keine Shortcodes aus.
- Kein Unterschied nach Aktivierung: Ein Seiten-Cache liefert die alte Seite aus. Cache leeren und erneut prüfen.
- Weiterhin Spam trotz Schutz: Die Adresse stand bereits vorher im Klartext online und ist in Listen gelandet. Der Schutz wirkt nur für die Zukunft. Serverseitige Spam-Filter sind dann der wirksamere Hebel.
Häufige Fragen
Hält die Kodierung jeden Roboter auf?
Nein. Das Plugin beschreibt den Schutz als wirksam gegen die meisten Harvester. Ein Programm, das HTML-Entitäten dekodiert, liest die Adresse trotzdem. Die Kodierung senkt die Menge, sie verhindert Spam nicht vollständig.
Brauche ich zusätzlich JavaScript-Verschleierung?
Nicht zwingend. Laut Einstellungsseite des Plugins bietet die JavaScript-basierte ROT13-Kodierung der Premium-Version den stärksten Schutz. JavaScript-Verfahren zeigen die Adresse aber nicht an, wenn JavaScript fehlt. Für das Impressum ist eine Lösung ohne JavaScript robuster.
Sollte ich eine eigene Adresse nur für die Website nutzen?
Das ist sinnvoll. Eine eigene Funktionsadresse wie info@ lässt sich gezielt filtern und bei Bedarf austauschen, ohne dass persönliche Postfächer betroffen sind.
Testumfang
Wir haben das Ganze mit WordPress 7.1.2 und Twenty Twenty-Five ausprobiert. Email Address Encoder hat Adressen im Text und in mailto:-Links kodiert. Aufgefallen ist uns, dass eine Adresse im Untertitel ungeschützt blieb und auch in der REST-API auftauchte. Kommentare und SEO-Plugins haben wir nicht geprüft, testen Sie deshalb zuerst auf einer Kopie Ihrer Seite.
Fazit
Mit Email Address Encoder, dem Shortcode [encode] und antispambot() bleiben E-Mail-Adressen und Telefonnummern für Besucher lesbar, im Quelltext aber für einfache Harvester unbrauchbar. Wichtig ist die Kontrolle im reinen Quelltext und der Blick auf Bereiche außerhalb der Filter wie den Untertitel. Diese Kontrolle nach Updates übernimmt auf Wunsch die WordPress-Wartung von Marcel Schönfelder.
Weiterführende Anleitungen und Quellen
- WordPress-Formulare absichern: Validierung, Uploads und Datenschutz
- Spam in Kommentaren und Formularen abwehren
- Child-Theme anlegen und Anpassungen bei Theme-Updates behalten
- § 5 Digitale-Dienste-Gesetz: Allgemeine Informationspflichten
- Email Address Encoder im WordPress-Plugin-Verzeichnis
- WordPress Developer Reference: antispambot()


