Versand von E-Mails über Formulare und Skripten

Beim Versand von E-Mails über z.B. Kontaktformulare, Skripten, Anwendungen, etc. sind für einen erfolgreichen Empfang diverse Punkte zu berücksichtigen.

Der erfolgreiche Versand von E-Mails über ein Kontakt-Formular, ein Skript, o.ä. ist von mehreren Faktoren abhängig. In diesem Artikel wollen wir die wichtigsten Faktoren beim Einsatz unserer Weblication® CMS wMailer-Funktionen auflisten und beschreiben.

1. Allgemeine Hinweise

Das Versenden von Nachrichten per E-Mail kann neben diversen E-Mail Programmen auch über einen Webserver erfolgen. Dabei sind für einen erfolgreichen Versand im Gegensatz zu einem E-Mail Client das Zusammenspiel der Komponenten zum Webserver zu berücksichtigen.

Aufgrund eines kontinuierlich steigenden Spam-Aufkommens reagieren immer mehr Mail-Provider mit dem Einsatz von Blacklists, Greylists, Spam-Filtern, Firewall- und Proxy-Regeln, etc. auf derartige E-Mails.
Dies kann leider auch dazu führen, daß E-Mail Nachrichten geblockt werden, welche - zumindest für Absender und Adressat - kein Spam oder Junk darstellen. Um so wichtiger ist es daher, auf mögliches Blocken und Filtern von E-Mails bestmöglich einzugehen.

Wir empfehlen aus diesen Gründen generell:

  • den Einsatz eines SMTP-Servers mit Authentifizierung über eine gesicherte / verschlüsselte Verbindung (ssl/tls)
  • Absender von E-Mails muß eine vom SMTP-Server erlaubte Mail-Domain sein.

Unabhängig von der bestmöglichen Konfiguration für den E-Mail Versand über Skripten / Formularen sollten Sie diese kontinuierlich auf korrekte Funktionalität prüfen (siehe auch Punkt 6: Protokollierung und regelmässige Kontrollen Weiterführende Links).

2. Verwendeter Transportweg

Für den Transport von E-Mails steht Ihnen in Weblication® CMS folgende Mail-Engine Auswahl zur Verfügung:

  • wSMTP2
    Neue Mail-Engine, welche ab CMS-Version 011.005.057.001 verwendet werden kann und beim Einsatz eines SMTP-Servers keine Zend-Installation mehr erfordert.
    Ab CMS-Version 12.x wird der Einsatz von wSMTP2 empfohlen! Zur Einrichtung der Mail-Engine beachten Sie bitte den hierzu verfügbaren Artikel (siehe auch weiterführende Links unten).
  • wSMTP
    Alte Standard-Einstellung, welche auch verwendet wird, wenn kein anderer engineType gesetzt ist!
  • zend
    Es wird die Mailfunktion der über die Serverinformationen installierten Zend-Bibliotheken verwendet.
    Dies erfordert den Einsatz und somit die Angabe eines SMTP-Servers in den Weblication® Systemeinstellungen (Mailserver).
    zend ist als Mail-Engine zum Einsatz über Weblication® nicht empfohlen und wurde nur in älteren CMS-Versionen bei Bedarf eingesetzt.
  • PHP
    Es wird die Mailfunktion von PHP verwendet: mail().

Weblication® versendet E-Mails standardmässig immer über Weblication® eigene Funktionen (wSMTP2). Ist in den Weblication® Systemeinstellungen ein SMTP-Host angegeben, wird der Versand nicht direkt vorgenommen, sondern an den eingestellten SMTP-Server übergeben.

Versand testen

Über die Systemeinstellungen (Mailserver) können Sie zum allgemeinen wie auch Newsletter Mailserver die Schaltfläche "Test E-Mail versenden" zur Prüfung der Versand-Funktionalität anklicken. Zum angemeldeten Benutzer (z.B. admin) muss in der Benutzer-Datei eine E-Mail Adresse hinterlegt sein, ansonsten kommt die Meldung "Bitte tragen Sie in Ihrem Benutzer eine E-Mail Adresse ein.". Sollte dies der Fall sein, müssen Sie sich nach dem Ergänzen der E-Mail Adresse als Benutzer abmelden und wieder neu anmelden.
Bei Änderungen an den SMTP-Einstellungen müssen diese vor einem erneuten Test gespeichert werden (es reicht ein Zwischenspeichern).
Beachten Sie zum Test-Versand, daß als Absender E-Mail Adresse die in den Systemeinstellungen (Allgemein) eingetragene "Absenderadresse von System E-Mails" verwendet wird (wenn leer, info@ Adresse der aufgerufenen (Sub)Domain)!

Die Debug-Ausgabe zeigt Ihnen die Rückmeldung vom verwendeten Mail-System (PHP oder SMTP-Server) und gibt somit genaue Aufschlüsse darüber, was bei einem Fehler die Ursache ist.
Beispiele:

  • Authentication failed
    Die hinterlegten Benutzer-Daten der Mailbox stimmen nicht.
    Prüfen Sie daher diese Daten. Ggf. hat sich zu einer Mailbox das Passwort beim E-Mail Provider geändert.
  • Connection refused
    Die Verbindung wurde vom SMTP-Server zurückgewiesen.
    Klären Sie mit dem ensprechenden Mailserver-Betreiber, was für einen erfolgreichen Einsatz zum SMTP-Server über PHP vom betreffenden Webserver aus erforderlich ist.

Wichtig beim Einsatz von Weblication® auf Webservern des Providers  Domainfactory:
Wenn E-Mails über eine verschlüsselte Verbindung (SSL) verschickt werden sollen, tragen Sie in den Systemeinstellungen am besten den allgemeinen SMTP-Server "sslout.df.eu" (oder den Alias "sslout.de") ein (Port 465 und ssl) und müssen dann als Mail-Engine (engineType) "wSMTP2" verwenden. (in älteren CMS-Versionen als 12.x "zend").

3. Authentifizierung für den Versand

a) Einsatz eines SMTP-Servers

Speziell beim Einsatz eines SMTP-Servers zum E-Mail Versand ist heutzutage in der Regel immer eine Authentifizierung erforderlich. Ausnahmen gibt es z.B. beim Einsatz in internen Netzwerken.
Die Authentifizierung erfolgt meist über ein bestehendes E-Mail Postfach, das mit seinen Daten (Benutzername und Passwort) vom SMTP-Server zum Versand als berechtigt angesehen wird.

Diese Daten erhalten Sie von Ihrem Provider bzw. können Sie in den meisten Fällen auch direkt über das Kundenmenü des Provider einsehen. Tragen Sie diese Daten im Register "Mailserver" der Weblication® Systemeinstellungen ein. Beispiele für diverse Provider finden Sie über den zuvor genannten Link.

Sofern sich diese Daten beim Provider einmal ändern sollten (Host, Benutzername, Passwort), müssen Sie die geänderten Daten auch wieder in den Systemeinstellungen entsprechend ändern.

Beachten Sie beim Einsatz eines SMTP-Servers, daß es abhängig vom Provider erforderlich ist, einen SPF-Record (SPF: Sender Policy Framework) zur verwendeten Domain (meist die lizenzierte Domain) zu setzen. Ansonsten kann es vorkommen, daß E-Mails nicht vom SMTP-Server weitergereicht werden. Solch eine Ablehnung erfolgt in der Regel ohne Rückmeldung / Hinweis, weshalb man also nicht darauf hingewiesen wird.

Ein SPF-Eintrag zu einer Domain, welche z.B. über Domainfactory verwaltet wird, kann z.B. so aussehen:

v=spf1 mx a include:ispgateway.de -all

Klären Sie dies direkt mit Ihrem Mail-Provider, um den korrekten Eintrag zu setzen.

b) Einsatz der PHP mail() Funktion

Klären Sie beim Einsatz der PHP mail() Funktion direkt mit Ihrem Provider, welche Einschränkungen und Bestimmungen es beim Versand von E-Mails gibt.

4. Absender und Empfänger Adressen

Über Kontakt- / Anfrage-Formulare wird dem Seitenbesucher meist die Möglichkeit gegeben, seine E-Mail Adresse im Formular zu hinterlegen. Damit man bei E-Mails über solch ein Formular dem Anfragenden direkt antworten kann, ist meist die im Formular eingetragene E-Mail Adresse des Seitenbesuchers als Absender gesetzt:

Beispiel 1: Auszug aus /de/kontakt/index.php zum Feld "E-Mail an den definierten Empfänger" - Absender-Adresse des Seitenbesuchers

From: [!--email--]
To: [!--to--]
Content-Type: text/plain; charset=UTF-8
Subject: [!--subject--]

...

Viele E-Mail Provider erlauben über deren Mail-Server (SMTP-Host) nur E-Mail Adressen von Domains, welche dem Mailserver bekannt sind. In der Regel sind das alle E-Mail Adressen zu Domains, welche beim Provider registriert sind. Teilweise kann es aber auch weitergehende Limitierungen geben, was Sie beim Mail-Provider erfragen sollten.

Aus diesem Grund sollten Sie Formulare so umsetzen, daß diese eine Absender E-Mail Adresse gesetzt haben, welche vom verwendeten Mail-System (z.B. SMTP) zum Senden erlaubt ist.
Die "E-Mail an den definierten Empfänger" setzen Sie daher im so benannten Feld im Formular auf eine entsprechende Adresse, siehe z.B.:

Beispiel 2: Auszug aus /de/kontakt/index.php zur Box "E-Mail an den definierten Empfänger" - Absender-Adresse einer erlaubten Mail-Domain

From: absender@lizenzierteDomain.tld
To: [!--to--]
Reply-To: [!--email--]
Content-Type: text/plain; charset=UTF-8
Subject: [!--subject--]

...

Falls das E-Mail Feld im Formular kein Pflichtfeld sein soll und somit ein Reply-To auch leer sein kann, können Sie das mit Platzhaltern abfragen (siehe nachfolgend). Achten Sie in solch einen Fall darauf, daß das E-Mail Formularfeld bei einem optionalen Eintrag eine gültige E-Mail Adresse hinterlegt bekommt.

Beispiel 2: Auszug aus /de/kontakt/index.php zur Box "E-Mail an den definierten Empfänger" - Absender-Adresse einer erlaubten Mail-Domain

From: absender@lizenzierteDomain.tld
To: [!--to--][!--#if test="email != ''"--]
Reply-To: [!--email--][!--#endif--]
Content-Type: text/plain; charset=UTF-8
Subject: [!--subject--]

...

Ab Weblication® CMS-Version 011.005.026.000 unterstützt die Software beim Versand über das ZEND-Framework (und Angabe von SMTP-Daten) ein Reply-To im E-Mail Header, womit Sie die Antwort-Adresse hinterlegen können. Über die ab CMS 12.x empfohlene Mail-Engine wSMTP2 wird dies natürlich auch unterstützt.

Die BASE Projektbasis und Weblics® sind dahingehend in aktuellsten Versionen bereits so umgesetzt, daß als Absender eine Dummy E-Mail Adresse gesetzt ist ( From: mail@example.com ) und das Reply-To Feld auf den Namen des E-Mail Formularfeldes gesetzt ist ( Reply-To: [!--email--] ).
Passen Sie Ihr Formular auf eine für den Versand berechtigte E-Mail Adresse an! In der Regel kann eine E-Mail Adresse unterhalb der lizenzierten Domain verwendet werden.

5. Kriterien für Spam und Junk

Vorab die Begriffsdefinition von Spam und Junk aus Wikipedia:

"Als Spam [spæm] oder Junk (englisch für ‚Abfall‘ oder ‚Plunder‘) werden unerwünschte, in der Regel auf elektronischem Weg übertragene Nachrichten (Informationen) bezeichnet, die dem Empfänger unverlangt zugestellt werden und häufig werbenden Inhalt enthalten. Dieser Vorgang wird Spamming oder Spammen genannt, der Verursacher Spammer."

Prüfen Sie E-Mail Formulare und Skripten immer dahingehend, ob diese im E-Mail Header und Inhalt offensichtliche Spam-Kriterien aufweisen. Ansonsten laufen Sie Gefahr, daß die vom Seitenbesucher verschickten E-Mails entweder schon vorab gefiltert oder in Spam- bzw. Junk-Ordner verschoben werden und somit nicht gelesen werden.

6. Protokollierung und regelmässige Kontrollen

Kontrollieren Sie E-Mail Formulare und Skripten nicht nur beim ersten Einrichten, sondern auch danach in bestimmten Abständen auf korrekte Funktionalität. Es ist ärgerlich, wenn man zu augenscheinlich problemlos verschickten Anfragen / Bestellungen / etc. erst nach Tagen bzw. Wochen feststellt, daß diese nicht beim gewünschten Empfänger angekommen sind.

Wichtig ist in erster Linie, daß die hinterlegten Daten für den E-Mail Versand korrekt sind. Zusätzlich ist es in der Regel immer gut, wenn die Eingaben im Formular nicht nur per E-Mail verschickt werden, sondern auch protokolliert werden. So lassen sich Anfragen, Bestellungen, etc. im Nachgang rekonstruieren.
Achten Sie dabei auf rechtliche Belange, wie z.B. Datenschutz!

Nachfolgend ein paar wichtige Fragen, welche Ihnen die Kontrolle erleichtern sollen:

  • Sind die verwendeten SMTP-Daten für den Versand (noch) gültig?
  • Sind die hinterlegten Absender- und Empfänger-E-Mail-Adressen (noch) korrekt und werden auch abgerufen?
  • Werden alle Daten im Formular wie gewünscht auch in die E-Mail übernommen?
  • Findet eine funktionierende Protokollierung der Daten statt?
  • etc.

Grundsätzlich wird empfohlen, wichtige E-Mail Nachrichten (z.B. Bestellungen, Event-Buchungen, etc,) niemals rein dem automatisierten Versand zu überlassen, sondern immer von Personen prüfen bzw. bestätigen zu lassen.
Wenn z.B. Veranstaltungen, Anlässe oder dergleichen über Webseiten-Formulare gebucht werden können, sollte in einer automatisierten Bestätigung z.B. darauf hingewiesen werden, daß zur Vorabbestätigung nochmals eine gesonderte Bestätigung vom Betreiber erfolgt.