Mails kommen nicht an

Autor: Christian Sommer (doc)

Informationen und mögliche Fehlerursachen beim Versenden von Emails mit Website Baker.

Emails in WB 2.5.x - 2.6.4

Die für den Versand zuständige Mailroutine wurden im Lauf der Website Baker Entwicklung mehrfach überarbeitet. Bis einschliesslich WB v2.6.4 werden ausgehende Emails über die in PHP integrierte Funktion mail() verschickt.

Nachteile der PHP Funktion mail()

Leider kam es in der Vergangenheit immer wieder vor, dass per PHP mail() verschickte Emails zwar versandt wurden, beim Empfänger aber nie ankamen. Dieser Fehler ist oft auf drei Ursachen zurückzuführen:

  • Formfehler im Header oder Inhalt der Email (z.B. Zeilenumbruch Windows/Unix)
  • Falsche Konfiguration der Sendmail Routine in der php.ini
  • Ihr Mail Provider (z.B. GMX) nimmt generell keine via PHP mail() verschickten Emails entgegen

Formfehler im Header oder Inhalt der Email führen dazu, dass die Email als SPAM eingeordnet wird und somit im SPAM-Ordner landet, an den Absender zurückgeschickt, oder gar kommentarlos gelöscht wird. Eine falsche Konfiguration von Sendmail hat zur Folge, dass Ihre Email erst gar nicht verschickt wird.

Ein weiterer negativer Trend ist vor allem bei vielen kostenlosen Mail Provideren wie GMX zu beobachten. Um SPAM Emails entgegenzuwirken, gehen viele kostenlose Mail Provider dazu über, die Annahme von via PHP mail() verschickten Emails komplett zu verweigern. Die Email landet somit noch nicht einmal in Ihrem Spam Ordner.

Zusammenfassung: PHP mail()
Das verschicken von Emails über PHP mail() ist sehr unzuverlässig. Auch wenn die Email von Website Baker verschickt wurde, kann nicht gewährleistet werden, dass diese auch beim Empfänger ankommt.
Nach zahlreichen Tests hilft es auch nicht das PHP Skript um ein paar Headerinformationen zu erweitern.
Einzige Abhilfe verspricht zur Zeit nur das Versenden der Email über SMTP.

Emails ab WB 2.6.5

Aufgrund der negativen Erfahrungen mit PHP mail(), hat mit WB v2.6.5 die neue Email Routine PHPMailer Einzug erhalten. Die wichtigsten Features von PHPMailer seien nachfolgend kurz dargestellt:

  • Wahlweiser versandt über PHP mail() oder SMTP Server möglich
  • SMTP Autentifizierung (Passwort und Benutzername)
  • Mehrere TOs, CCs, BCCs und REPLY-TOs Adressen möglich
  • Plattform unabhängig (Linux/Unix/Mac/Windows)
  • Möglichkeit Anhänge zu verschicken
  • HTML formatierte Emails möglich

Bei der Integration von PHPMailer in Website Baker wurde darauf geachtet, dass keine Änderungen an bestehenden Funktionen, Templates oder integrierten Modulen (wie z.B. das Form Modul) vorgenommen werden mussten.

Um die Abwärtskompatibilität mit vorherigen Website Baker Versionen zu gewährleisten, werden in der Grundeinstellung von v2.6.5 Emails nach wie vor über PHP mail() verschickt.

Mails per SMTP versenden

Wenn Ihr Webhoster das verschicken von Emails über einen SMTP Host ohne vorige Authentifizierung unterstützt, sollten Sie die Grundeinstellung von PHP mail() auf SMTP mail ändern. Kontaktieren Sie Ihren Webhoster und Fragen Sie Ihn nach folgenden Daten:

  • SMTP Host Adresse (z.B. smtp.yourdomain.com)
  • vergewissern Sie sich, dass keine SMTP Authentifizierung erforderlich ist

Wenn Sie Website Baker v2.6.5 neu installieren, haben Sie die Möglichkeit die Einstellung PHP mail() oder SMTP mail im Schritt 7 des Installations-Assistenten auszuwählen.

Sollten Sie die Version v2.6.5 über eine frühere Version von Website Baker kopiert haben, müssen Sie eine Zeile in die Datei config.php im Hauptverzeichnis Ihrer WB Installation hinzufügen, um SMTP zu aktivieren. Laden Sie dazu die Datei config.php mit einem FTP Programm von Ihrem Webserver herunter. Öffnen Sie die heruntergeladene Datei mit einem beliebigen Texteditor und fügen Sie nachfolgende Zeile hinzu:

define('WBMAILER_SMTP_HOST', 'smtp.yourdomain.com');

Der Ausdruck: smtp.yourdomain.com muss dabei durch den SMTP Host Ihres Webservers ersetzt werden. Laden Sie die geänderte config.php Datei per FTP auf Ihren Webserver. Ab sofort steht werden alle von WB verschickten Emails per SMTP versandt.

Voraussetzungen für den erfolgreichen Mailversand

Um Emails in WB v2.6.5 über PHP mail() oder SMPT verschicken zu können, müssen die nachfolgenden Grundvoraussetzungen erfüllt sein:

  • Formal gültige FROM: Email Adresse
  • Mindestens eine formal gültige TO: Email Adresse
  • Formal gültige Server Email Adresse (unter: Backend/Optionen/Erweiterte Optionen)
Hinweis: GMX verwirft Emails, die als Sender (FROM:) eine GMX Adresse verwenden (vorname.nachname@gmx.de), aber nicht über einen GMX Mailsrever verschickt wurden!!!

Tip: Um solchen Fehlern zu entgehen, gebe als FROM: und Server Email: eine Emailadresse Deiner Domain, wie zum Beispiel: wbmailer@deinedomain.de

Vorschau:
In WB 2.7 kann die Auswahl SMTP oder PHP mail(), die Eingabe des SMTP Host, sowie die optionale Einstellung SMTP Authentifizierung mit Passwort und Benutzername im Backend unter dem Abschnitt Optionen eingestellt werden. Es sind dann keine Eingriffe mehr ind die Datei config.php notwendig. Einen Screenshot des Konfigurationpanel für WB 2.7 findest Du im englischsprachigen Forum.

Server verlangt SMTP Authentifizierung - was nun

Verlangt der Server eine SMTP Authentifizierung, müssen ein paar Zeilen PHP Code zur Datei /framework/class.wbmailer.php hinzugefügt werden. Lade die Datei per FTP herunter und öffne diese in einem Texteditor Deiner Wahl. Suche den folgendem Code Abschnitt (ab Zeile 42). 

function wbmailer() {
   // set method to send out emails
   if(defined('WBMAILER_SMTP_HOST')) {
     // sets Mailer to send messages using SMTP
     $this->IsSMTP();
     $this->Host = WBMAILER_SMTP_HOST; // use STMP host defined in config.php

und füge nachfolgende Zeilen hinzu: 

$this->SMTPAuth = true; // SMTP with authentification
$this->Username = "xxxxxx"; // SMTP-Username
$this->Password = "xxxxxx"; // SMTP-Password

Ersetze xxxxx mit den für die SMTP Authentifizierung benötigten Benutzernamen und Passwort. Speichere die Datei und lade die modifizierte Datei wieder per FTP auf den Webserver. Zur Sicherheit sollte die Originaldatei vorher umbenannt werden. Lösche den Browsercache und melde Dich erneut am WB Backend an. Das versenden von Emails sollte nun funktionieren. Weitere Informationen findest Du in diesem Forumsbeitrag.